Loads the desired JSON for a service. (uncached)

        This will fall back through all the ``data_dirs`` provided to the
        constructor, returning the **first** one it finds.

        :param service_name: The name of the desired service
        :type service_name: string

        :param api_version: (Optional) The desired API version to load
        :type service_name: string

        :param cached: (Optional) Whether or not the cache should be used
            when attempting to load the data. Default is ``True``.
        :type cached: boolean

        :returns: The loaded JSON as a dict

def load(self, service_name, api_version=None, cached=True):
        """
        Loads the desired JSON for a service. (uncached)

        This will fall back through all the ``data_dirs`` provided to the
        constructor, returning the **first** one it finds.

        :param service_name: The name of the desired service
        :type service_name: string

        :param api_version: (Optional) The desired API version to load
        :type service_name: string

        :param cached: (Optional) Whether or not the cache should be used
            when attempting to load the data. Default is ``True``.
        :type cached: boolean

        :returns: The loaded JSON as a dict
        """
        # Fetch from the cache first if it's there.
        if cached:
            if service_name in self._loaded_data:
                if api_version in self._loaded_data[service_name]:
                    return self._loaded_data[service_name][api_version]

        data = {}
        options = self.get_available_options(service_name)
        match, version = self.get_best_match(
            options,
            service_name,
            api_version=api_version
        )

        with open(match, 'r') as json_file:
            data = json.load(json_file)
            # Embed where we found it from for debugging purposes.
            data['__file__'] = match
            data['api_version'] = version

        if cached:
            self._loaded_data.setdefault(service_name, {})
            self._loaded_data[service_name][api_version] = data

        return data