##### SUMMARY
ansible_play_batch variable is including unreachable hosts

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
ansible_play_batch

##### ANSIBLE VERSION
```paste below
ansible 2.9.2
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/[removed]/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /[removed]/.local/lib/python3.5/site-packages/ansible
  executable location = /[removed]/.local/bin/ansible
  python version = 3.5.2 (default, Oct  8 2019, 13:06:37) [GCC 5.4.0 20160609]

```

##### CONFIGURATION
```paste below
DEFAULT_FORKS(/etc/ansible/ansible.cfg) = 25
DEFAULT_HOST_LIST(/etc/ansible/ansible.cfg) = ['/etc/ansible/inventory']
DEFAULT_LOG_PATH(/etc/ansible/ansible.cfg) = /var/log/ansible/ansible.log
TRANSFORM_INVALID_GROUP_CHARS(/etc/ansible/ansible.cfg) = ignore

```

##### OS / ENVIRONMENT
ubuntu 16.04


##### STEPS TO REPRODUCE
When evaluating ansible_play_batch  using jinja in a playbook, ansible_play_batch returns an unreachable hosts, causing the entire play example below to fail (due to run_once). To reproduce, target two machines, and reboot one machine mid-play (causing an unreachable on that machine).

<!--- Paste example playbooks or commands between quotes below -->
```yaml
  - set_fact:
        emailBody: |
          {% for item in ansible_play_batch -%}
          {% if hostvars[item].kernelVersion != hostvars[item].currentKernel.stdout %}
          {{ hostvars[item].inventory_hostname + ' - ' + hostvars[item].currentKernel.stdout + ' - ' + hostvars[item].kernelVersion }}
          {% endif %}
          {%- endfor %}
    delegate_to: 127.0.0.1
    run_once: True
```


##### EXPECTED RESULTS
ansible_play_batch only includes all non-failed/non-unreachable hosts per documentation found at https://docs.ansible.com/ansible/latest/reference_appendices/special_variables.html


##### ACTUAL RESULTS
ansible_play_batch  is including the rebooted (unreachable) machine. 

<!--- Paste verbatim command output between quotes -->
```paste below
"The task includes an option with an undefined variable. The error was: 'ansible.vars.hostvars.HostVarsVars object' has no attribute 'kernelVersion'
```

raise AnsibleError("callback must be an instance of CallbackBase or the name of a callback plugin")
        
        callback_list = list(callback_loader.all(class_only=True))
        
        for c in C.CALLBACKS_ENABLED:
            
            plugin = callback_loader.get(c, class_only=True)
            
            if plugin:
                
                if plugin not in callback_list:
                    callback_list.append(plugin)
            else:
                display.warning("Skipping callback plugin '%s', unable to load" % c)
        
        for callback_plugin in callback_list:
            callback_type = getattr(callback_plugin, 'CALLBACK_TYPE', '')
            callback_needs_enabled = getattr(callback_plugin, 'CALLBACK_NEEDS_ENABLED', getattr(callback_plugin, 'CALLBACK_NEEDS_WHITELIST', False))
            
            cnames = getattr(callback_plugin, '_redirected_names', [])
            if cnames:
                
                callback_name = cnames[0]
            else:
                
                (callback_name, _) = os.path.splitext(os.path.basename(callback_plugin._original_path))
            display.vvvvv("Attempting to use '%s' callback." % (callback_name))
            if callback_type == 'stdout':
                
                if callback_name != self._stdout_callback or stdout_callback_loaded: