<!--- 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
hostvars not available to delegate_to tasks

Related to #70320

##### 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 VERSION
<!--- Paste verbatim output from "ansible --version" between quotes -->
```paste below
$ ansible --version
ansible 2.9.10
  config file = /Users/jeanfabrice/test/ansible.cfg
  configured module search path = ['/Users/jeanfabrice/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /Users/jeanfabrice/.virtualenvs/test/lib/python3.7/site-packages/ansible
  executable location = /Users/jeanfabrice/.virtualenvs/test/bin/ansible
  python version = 3.7.7 (default, Mar 14 2020, 02:39:38) [Clang 11.0.0 (clang-1100.0.33.17)]
```

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

##### STEPS TO REPRODUCE
<!--- Describe exactly how to reproduce the problem, using a minimal test-case -->

<!--- Paste example playbooks or commands between quotes below -->
```yaml
---
- hosts: all

  tasks:
    - name: Set login
      set_fact:
        login: user

    - name: Set password
      set_fact:
        password: password

    - name: delegate ls to server2
      delegate_to: server2
      command: ls
      vars:
        ansible_user: "{{ hostvars[inventory_hostname]['login'] }}"
        ansible_password: "{{ hostvars[inventory_hostname]['password'] }}"
```

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

##### EXPECTED RESULTS
<!--- Describe what you expected to happen when running the steps above -->
hostvars to be defined in delegate_to tasks

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

<!--- Paste verbatim command output between quotes -->
```paste below
$ ./bin/ansible-playbook test.yml -i inventory  -l server1

PLAY [all] *****************************************************************************************************************************************************************************

TASK [Set login] ***********************************************************************************************************************************************************************
ok: [server1]

TASK [Set password] ********************************************************************************************************************************************************************
ok: [server1]

TASK [delegate ls to server2] **********************************************************************************************************************************************************
fatal: [server1]: FAILED! => {"msg": "'hostvars' is undefined"}

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

_hosts=None, _hosts_all=None, stage='task'):
        '''
        Returns the variables, with optional "context" given via the parameters
        for the play, host, and task (which could possibly result in different
        sets of variables being returned due to the additional context).
        The order of precedence is:
        - play->roles->get_default_vars (if there is a play context)
        - group_vars_files[host] (if there is a host context)
        - host_vars_files[host] (if there is a host context)
        - host->get_vars (if there is a host context)
        - fact_cache[host] (if there is a host context)
        - play vars (if there is a play context)
        - play vars_files (if there's no host context, ignore
          file names that cannot be templated)
        - task->get_vars (if there is a task context)
        - vars_cache[host] (if there is a host context)
        - extra vars
        ``_hosts`` and ``_hosts_all`` should be considered private args, with only internal trusted callers relying
        on the functionality they provide. These arguments may be removed at a later date without a deprecation
        period and without warning.
        '''
        display.debug("in VariableManager get_vars()")
        all_vars = dict()
        magic_variables = self._get_magic_variables(
            play=play,
            host=host,
            task=task,
            include_hostvars=include_hostvars,
            include_delegate_to=include_delegate_to,
            _hosts=_hosts,