##### SUMMARY
The collection loader currently imports a number of things from Ansible, the heaviest of which is config/constants. This makes it heavyweight and somewhat dangerous for ansible-test and unit tests to use. Refactor it to minimize those imports and supply the necessary impls another way (constructor, DI pattern, etc).

##### ISSUE TYPE
- Feature Idea

##### COMPONENT NAME
AnsibleCollectionLoader

##### ADDITIONAL INFORMATION

mod = import_module(map_package + synpkg_remainder)
                sys.modules[fullname] = mod
                return mod
            elif pkg_type == 'flatmap':
                raise NotImplementedError()
            elif pkg_type == 'pkg_only':
                newmod = ModuleType(fullname)
                newmod.__package__ = fullname
                newmod.__file__ = '<ansible_synthetic_collection_package>'
                newmod.__loader__ = self
                newmod.__path__ = []
                sys.modules[fullname] = newmod
                return newmod
        if not parent_pkg:  
            package_paths = [self._extend_path_with_ns(p, fullname) for p in self.n_collection_paths]
        else:  
            package_paths = [self._extend_path_with_ns(p, fullname) for p in parent_pkg.__path__]
        for candidate_child_path in package_paths:
            code_object = None
            is_package = True
            location = None
            
            if os.path.isdir(candidate_child_path):
                
                
                
                location = os.path.join(candidate_child_path, '__synthetic__')
            else:
                for source_path in [os.path.join(candidate_child_path, '__init__.py'),
                                    candidate_child_path + '.py']: