<!--- Verify first that your issue is not already reported on GitHub -->
<!--- Also test if the latest release and devel branch are affected too -->
<!--- Complete *all* sections as described, this form is processed automatically -->

##### SUMMARY
<!--- Explain the problem briefly below -->

A role provided via collection that includes a call to setup: gather_subset fails because the windows powershell version of setup is picked.

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
<!--- Write the short name of the module, plugin, task or feature below, use your best guess if unsure -->

ansible plugin loader

##### ANSIBLE VERSION
<!--- Paste verbatim output from "ansible --version" between quotes -->
```
ansible 2.9.1
  config file = None
  configured module search path = ['/home/aschultz/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /home/aschultz/.virtualenvs/ansible/lib/python3.6/site-packages/ansible
  executable location = /home/aschultz/.virtualenvs/ansible/bin/ansible
  python version = 3.6.8 (default, Oct  8 2019, 16:29:04) [GCC 8.2.1 20180905 (Red Hat 8.2.1-3)]
```

Also tested
```
ansible 2.10.0.dev0
  config file = None
  configured module search path = ['/home/aschultz/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /home/aschultz/.virtualenvs/ansible-devel/lib/python3.6/site-packages/ansible-2.10.0.dev0-py3.6.egg/ansible
  executable location = /home/aschultz/.virtualenvs/ansible-devel/bin/ansible
  python version = 3.6.8 (default, Oct  8 2019, 16:29:04) [GCC 8.2.1 20180905 (Red Hat 8.2.1-3)]
```

##### CONFIGURATION
<!--- Paste verbatim output from "ansible-config dump --only-changed" between quotes -->
```
No changes
```

##### OS / ENVIRONMENT
<!--- Provide all relevant information below, e.g. target OS versions, network device firmware, etc. -->

On a fedora31 host running under python 3.6.8 in a virtual environment against a CentOS7 host or against the localhost


##### STEPS TO REPRODUCE
<!--- Describe exactly how to reproduce the problem, using a minimal test-case -->
I have provided a sample collection that reproduces the problem:

https://github.com/mwhahaha/ansible-collection-failure

On a linux host do:

```
git clone https://github.com/mwhahaha/ansible-collection-failure
cd ansible-collection-failure
ansible-galaxy collection build failure
ansible-galaxy collection install mwhahaha-failure-1.0.0.tar.gz
ansible-playbook sigh.yml
```

<!--- HINT: You can paste gist.github.com links for larger files -->

##### EXPECTED RESULTS
<!--- Describe what you expected to happen when running the steps above -->

setup gather_subset should complete successfully. 

##### ACTUAL RESULTS
<!--- Describe what actually happened. If possible run with extra verbosity (-vvvv) -->

Ansible attempts to use the powershell setup module on a linux system.
<!--- Paste verbatim command output between quotes -->
```
$ ansible-playbook sigh.yml 
[WARNING]: No inventory was parsed, only implicit localhost is available

[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'


PLAY [localhost] *********************************************************************************************************************************************************************

TASK [orly] **************************************************************************************************************************************************************************

TASK [sadness : Gather facts for sadness] ********************************************************************************************************************************************
fatal: [localhost]: FAILED! => {"changed": false, "module_stderr": "/bin/sh: powershell: command not found\n", "module_stdout": "", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 127}

PLAY RECAP ***************************************************************************************************************************************************************************
localhost                  : ok=0    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0 
```

if '.' in name:
            return super(Jinja2Loader, self).get(name, *args, **kwargs)
        raise AnsibleError('No code should call find_plugin for Jinja2Loaders (Not implemented)')
    def all(self, *args, **kwargs):
        """
        Differences with :meth:`PluginLoader.all`:
        * We do not deduplicate ansible plugin names.  This is because we don't care about our
          plugin names, here.  We care about the names of the actual jinja2 plugins which are inside
          of our plugins.
        * We reverse the order of the list of plugins compared to other PluginLoaders.  This is
          because of how calling code chooses to sync the plugins from the list.  It adds all the
          Jinja2 plugins from one of our Ansible plugins into a dict.  Then it adds the Jinja2
          plugins from the next Ansible plugin, overwriting any Jinja2 plugins that had the same
          name.  This is an encapsulation violation (the PluginLoader should not know about what
          calling code does with the data) but we're pushing the common code here.  We'll fix
          this in the future by moving more of the common code into this PluginLoader.
        * We return a list.  We could iterate the list instead but that's extra work for no gain because
          the API receiving this doesn't care.  It just needs an iterable
        """
        
        
        kwargs['_dedupe'] = False
        
        
        plugins = [p for p in super(Jinja2Loader, self).all(*args, **kwargs)]
        plugins.reverse()
        return plugins
def _load_plugin_filter():