##### 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`)
if not shell_type:
        
        shell_type = 'sh'
        
        if executable:
            if isinstance(executable, string_types):
                shell_filename = os.path.basename(executable)
                try:
                    shell = shell_loader.get(shell_filename)
                except Exception:
                    shell = None
                if shell is None:
                    for shell in shell_loader.all():
                        if shell_filename in shell.COMPATIBLE_SHELLS:
                            shell_type = shell.SHELL_FAMILY
                            break
        else:
            raise AnsibleError("Either a shell type or a shell executable must be provided ")
    shell = shell_loader.get(shell_type)
    if not shell:
        raise AnsibleError("Could not find the shell plugin required (%s)." % shell_type)
    if executable:
        setattr(shell, 'executable', executable)
    return shell
def add_dirs_to_loader(which_loader, paths):
    loader = getattr(sys.modules[__name__], '%s_loader' % which_loader)
    for path in paths:
        loader.add_directory(path, with_subdir=True)
class PluginLoader: