Add role inference calls, domains

Also rework get_by_name_or_uuid method to work with multiple keys
and add get_by_name_or_uuid decorator for role assign, unassgin and check.

Change-Id: I808ce0c1aa1a7231875256ae6f22e986d78f8f00
Related-Issue: PROD-21388
diff --git a/_modules/keystonev3/users.py b/_modules/keystonev3/users.py
index 9582eef..d239922 100644
--- a/_modules/keystonev3/users.py
+++ b/_modules/keystonev3/users.py
@@ -1,24 +1,19 @@
-from keystonev3.common import get_by_name_or_uuid, send
+from keystonev3.common import send
+from keystonev3.arg_converter import get_by_name_or_uuid_multiple
 try:
     from urllib.parse import urlencode
 except ImportError:
     from urllib import urlencode
 
 
-@send('get')
-def user_list(**kwargs):
-    url = '/users?{}'.format(urlencode(kwargs))
-    return url, None
-
-
-@get_by_name_or_uuid(user_list, 'users', 'user_id')
+@get_by_name_or_uuid_multiple([('user', 'user_id')])
 @send('get')
 def user_get_details(user_id, **kwargs):
     url = '/users/{}?{}'.format(user_id, urlencode(kwargs))
     return url, None
 
 
-@get_by_name_or_uuid(user_list, 'users', 'user_id')
+@get_by_name_or_uuid_multiple([('user', 'user_id')])
 @send('patch')
 def user_update(user_id, **kwargs):
     url = '/users/{}'.format(user_id)
@@ -28,7 +23,7 @@
     return url, json
 
 
-@get_by_name_or_uuid(user_list, 'users', 'user_id')
+@get_by_name_or_uuid_multiple([('user', 'user_id')])
 @send('delete')
 def user_delete(user_id, **kwargs):
     url = '/users/{}'.format(user_id)