### Summary

When calling `debug` with `var: ansible_facts`, the unprefixed keys of `ansible_facts` are injected as variables and override at least some other variable precedences (host vars at least) within ansibles precedence order.

I believe the issue occurs in [ansible/executor/task_executor.py](https://github.com/ansible/ansible/blob/devel/lib/ansible/executor/task_executor.py#L715) as `ansible_facts` would be in results, but without `ansible_` prefixes in keys at this point. I think this issue may have been previously masked by the behavior of `AnsibleJ2Vars.__getitem__`, which changed in [this commit](https://github.com/ansible/ansible/commit/a2af8432f36ec8cc5368a747f1211d2b9ba01f2e#diff-5671ace2a63ef6117ee1fb489c22b1d1a3a0a0d6352b10a0f18d02ee89faa57aL84).

### Issue Type

Bug Report

### Component Name

- lib/ansible/executor/task_executor
- lib/ansible/template/vars

### Ansible Version

```console (paste below)
$ ansible --version
 ansible 2.9.19
  config file = omitted
  configured module search path = [u'/omitted/library']
  ansible python module location = /usr/lib/python2.7/dist-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.17 (default, Feb 27 2021, 15:10:58) [GCC 7.5.0]
```

### Configuration

```console (paste below)
$ ansible-config dump --only-changed
CACHE_PLUGIN(/omitted/ansible.cfg) = jsonfile
CACHE_PLUGIN_CONNECTION(/omitted/ansible.cfg) = .fact_cache/
CACHE_PLUGIN_TIMEOUT(/omitted/ansible.cfg) = 86400
DEFAULT_FILTER_PLUGIN_PATH(env: ANSIBLE_FILTER_PLUGINS) = [u'/omitted/filter_plugins']
DEFAULT_GATHERING(/omitted/ansible.cfg) = implicit
DEFAULT_HOST_LIST(/omitted/ansible.cfg) = [u'/omitted/hosts']
DEFAULT_LOG_PATH(/omitted/ansible.cfg) = /omitted/ansible.log
DEFAULT_MODULE_PATH(/omitted/ansible.cfg) = [u'/omitted/library']
DEFAULT_REMOTE_USER(/omitted/ansible.cfg) = omitted
DEFAULT_ROLES_PATH(/omitted/ansible.cfg) = [u'/omitted/roles']
DEFAULT_VAULT_IDENTITY_LIST(/omitted/ansible.cfg) = omitted
RETRY_FILES_ENABLED(/omitted/ansible.cfg) = False
```

### OS / Environment

Ubuntu 18.04 LTS (bionic) using the ansible/ansible PPA

### Steps to Reproduce

Remove fact cache of hostname first.

```yaml (paste below)
- hosts: hostname
  tasks:
  - debug:
      var: system_vendor
  - debug:
      var: interfaces
  - debug:
      var: ansible_facts
  - debug:
      var: system_vendor
  - debug:
      var: interfaces
  - fail:

```

### Expected Results

I expected to be able to access the `interfaces` variable provided in my host vars. I did not expect to have a variable `system_vendor` in any scope.

In playbook order, I expected
1. Successful `setup`
1. not defined error
1. my `interfaces` variable
1. contents of `ansible_facts`
1. not defined error
1. my `interfaces` variable
1. fail as requested

### Actual Results

After calling debug with `var: ansible_facts`, non-prefixed keys of `ansible_facts` are injected into variables and appear to have a higher priority than host vars at least.

```console (paste below)
PLAY [groups] **********************************************************************************************************************************************************************

TASK [Gathering Facts] *******************************************************************************************************************************************************************************************************************************************************
ok: [hostname]

TASK [debug] *****************************************************************************************************************************************************************************************************************************************************************
ok: [hostname] => {
    "system_vendor": "VARIABLE IS NOT DEFINED!"
}

TASK [debug] *****************************************************************************************************************************************************************************************************************************************************************
ok: [hostname] => {
    "interfaces": {
        "dict_key1": "val1", 
        "dict_key2": "val2"
    }
}

TASK [debug] *****************************************************************************************************************************************************************************************************************************************************************
ok: [hostname] => {
    "ansible_facts": {
        [... not relevant ...], 
        "interfaces": [
            "lo", 
            "eth0", 
            "eth1"
        ], 
        [... not relevant ...], 
        "system_vendor": "VMware, Inc.", 
        [... not relevant ...]
    }
}

TASK [debug] *****************************************************************************************************************************************************************************************************************************************************************
ok: [hostname] => {
    "system_vendor": "VMware, Inc."
}

TASK [debug] *****************************************************************************************************************************************************************************************************************************************************************
ok: [hostname] => {
    "interfaces": [
        "lo", 
        "eth0", 
        "eth1"
    ]
}

TASK [fail] ******************************************************************************************************************************************************************************************************************************************************************
fatal: [hostname]: FAILED! => {"changed": false, "msg": "Failed as requested from task"}

PLAY RECAP *******************************************************************************************************************************************************************************************************************************************************************
hostname : ok=7    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0   
```
'''
        Runs the task with the loop items specified and collates the result
        into an array named 'results' which is inserted into the final result
        along with the item for which the loop ran.
        '''
        results = []
        
        
        
        task_vars = self._job_vars
        loop_var = 'item'
        index_var = None
        label = None
        loop_pause = 0
        extended = False
        templar = Templar(loader=self._loader, variables=self._job_vars)
        
        if self._task.loop_control:
            loop_var = templar.template(self._task.loop_control.loop_var)
            index_var = templar.template(self._task.loop_control.index_var)
            loop_pause = templar.template(self._task.loop_control.pause)
            extended = templar.template(self._task.loop_control.extended)
            
            label = self._task.loop_control.label
        
        if label is None:
            label = '{{' + loop_var + '}}'
        if loop_var in task_vars:
            display.warning(u"The loop variable '%s' is already in use. "
                            u"You should set the `loop_var` value in the `loop_control` option for the task"