### 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   
```
hostname = host.get_name()
                    self._variable_manager.clear_facts(hostname)
                msg = "facts cleared"
            else:
                skipped = True
                skip_reason += ', not clearing facts and fact cache for %s' % target_host.name
        elif meta_action == 'clear_host_errors':
            if _evaluate_conditional(target_host):
                for host in self._inventory.get_hosts(iterator._play.hosts):
                    self._tqm._failed_hosts.pop(host.name, False)
                    self._tqm._unreachable_hosts.pop(host.name, False)
                    iterator._host_states[host.name].fail_state = iterator.FAILED_NONE
                msg = "cleared host errors"
            else:
                skipped = True
                skip_reason += ', not clearing host error state for %s' % target_host.name
        elif meta_action == 'end_play':
            if _evaluate_conditional(target_host):
                for host in self._inventory.get_hosts(iterator._play.hosts):
                    if host.name not in self._tqm._unreachable_hosts:
                        iterator._host_states[host.name].run_state = iterator.ITERATING_COMPLETE
                msg = "ending play"
            else:
                skipped = True
                skip_reason += ', continuing play'
        elif meta_action == 'end_host':
            if _evaluate_conditional(target_host):
                iterator._host_states[target_host.name].run_state = iterator.ITERATING_COMPLETE
                iterator._play._removed_hosts.append(target_host.name)
                msg = "ending play for %s" % target_host.name