'Get a list of users from start row to a limit number of rows. This will
return a json object with users and total number of users in users list.
Args:
table (str): the table name
keyvalues (dict[str, Any] | None):
column names and values to select the rows with, or None to not
apply a WHERE clause.
pagevalues ([]):
order (str): order the select by this column
start (int): start number to begin the query from
limit (int): number of rows to reterive
retcols (iterable[str]): the names of the columns to return
Returns:
defer.Deferred: resolves to json object {list[dict[str, Any]], count}'

@defer.inlineCallbacks
def get_user_list_paginate(self, table, keyvalues, pagevalues, retcols, desc='get_user_list_paginate'):

    users = (yield self.runInteraction(desc, self._simple_select_list_paginate_txn, table, keyvalues, pagevalues, retcols))
    count = (yield self.runInteraction(desc, self.get_user_count_txn))
    retval = {'users': users, 'total': count}
    defer.returnValue(retval)
