##### SUMMARY
2.9/devel currently supports relative Python imports inside a collection for all but modules/module_utils. Extend the AnsiballZ analysis/bundling to support relative imports for those as well.

##### ISSUE TYPE
- Feature Idea

##### COMPONENT NAME
module_common.py

##### ADDITIONAL INFORMATION
This is needed to minimize the number of places a collection must refer to itself by name. Also a convenience for shorter intra-collection Python imports (eg `from ..module_utils.blah import AThing` vs. `from ansible_collections.myns.mycoll.plugins.module_utils.blah import AThing`)
#
        
        
        global _PLUGIN_FILTERS
        dedupe = kwargs.pop('_dedupe', True)
        path_only = kwargs.pop('path_only', False)
        class_only = kwargs.pop('class_only', False)
        
        if path_only and class_only:
            raise AnsibleError('Do not set both path_only and class_only when calling PluginLoader.all()')
        all_matches = []
        found_in_cache = True
        for i in self._get_paths():
            all_matches.extend(glob.glob(os.path.join(i, "*.py")))
        loaded_modules = set()
        for path in sorted(all_matches, key=os.path.basename):
            name = os.path.splitext(path)[0]
            basename = os.path.basename(name)
            if basename == '__init__' or basename in _PLUGIN_FILTERS[self.package]:
                continue
            if dedupe and basename in loaded_modules:
                continue
            loaded_modules.add(basename)
            if path_only:
                yield path
                continue
            if path not in self._module_cache:
                try:
                    module = self._load_module_source(name, path)
                    self._load_config_defs(basename, module, path)