'Fetch a list of device keys.
Args:
query_list(list): List of pairs of user_ids and device_ids.
include_all_devices (bool): whether to include entries for devices
that don\'t have device keys
Returns:
Dict mapping from user-id to dict mapping from device_id to
dict containing "key_json", "device_display_name".'

@defer.inlineCallbacks
def get_e2e_device_keys(self, query_list, include_all_devices=False):

    if (not query_list):
        defer.returnValue({})
    results = (yield self.runInteraction('get_e2e_device_keys', self._get_e2e_device_keys_txn, query_list, include_all_devices))
    for (user_id, device_keys) in results.iteritems():
        for (device_id, device_info) in device_keys.iteritems():
            device_info['keys'] = json.loads(device_info.pop('key_json'))
    defer.returnValue(results)
