<!--- 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 -->
As of Ansible 2.7 the `--force-handlers` option is no longer running the handler/s on all hosts when used with strategy free. Only tested back to 2.5 and this was working as I would expect it to on 2.5 & 2.6.

##### ISSUE TYPE
- Bug Report

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

##### ANSIBLE VERSION
<!--- Paste verbatim output from "ansible --version" between quotes -->
```paste below
ansible 2.10.0.dev0
  config file = /Users/bdudas/dev-net/handlers/ansible.cfg
  configured module search path = [u'/Users/bdudas/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /Users/bdudas/dev-net/handlers/ansible/lib/ansible
  executable location = /Users/bdudas/dev-net/handlers/ansible/bin/ansible
  python version = 2.7.16 (default, Oct 16 2019, 00:34:56) [GCC 4.2.1 Compatible Apple LLVM 10.0.1 (clang-1001.0.37.14)]
```

##### CONFIGURATION
<!--- Paste verbatim output from "ansible-config dump --only-changed" between quotes -->
```paste below
DEFAULT_STRATEGY(/Users/bdudas/dev-net/handlers/ansible.cfg) = free
HOST_KEY_CHECKING(/Users/bdudas/dev-net/handlers/ansible.cfg) = False
RETRY_FILES_ENABLED(/Users/bdudas/dev-net/handlers/ansible.cfg) = False
```

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


##### 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
  gather_facts: false

  tasks:
    - command: hostname
      register: id
      notify: recovery_x

    - debug:
        var: id

    - name: failure
      fail: msg="Testing Failure"
      when: inventory_hostname == 'covfefe'

  handlers:
    - name: recovery_x
      shell: hostname
...
```
ansible-playbook <playbook.yml> --force-handlers
<!--- HINT: You can paste gist.github.com links for larger files -->

##### EXPECTED RESULTS
<!--- Describe what you expected to happen when running the steps above -->
Handlers will run against all hosts when using the `--force-handlers` option. 

##### ACTUAL RESULTS
<!--- Describe what actually happened. If possible run with extra verbosity (-vvvv) -->
Handler is only run on 1 of the 2 target hosts.
<!--- Paste verbatim command output between quotes -->
```paste below

```

self._tqm.send_callback('v2_on_file_diff', task_result)
                    self._tqm.send_callback('v2_runner_item_on_ok', task_result)
                continue
            if original_task.register:
                host_list = self.get_task_hosts(iterator, original_host, original_task)
                clean_copy = strip_internal_keys(module_response_deepcopy(task_result._result))
                if 'invocation' in clean_copy:
                    del clean_copy['invocation']
                for target_host in host_list:
                    self._variable_manager.set_nonpersistent_facts(target_host, {original_task.register: clean_copy})
            
            role_ran = False
            if task_result.is_failed():
                role_ran = True
                ignore_errors = original_task.ignore_errors
                if not ignore_errors:
                    display.debug("marking %s as failed" % original_host.name)
                    if original_task.run_once:
                        
                        for h in self._inventory.get_hosts(iterator._play.hosts):
                            if h.name not in self._tqm._unreachable_hosts:
                                state, _ = iterator.get_next_task_for_host(h, peek=True)
                                iterator.mark_host_failed(h)
                                state, new_task = iterator.get_next_task_for_host(h, peek=True)
                    else:
                        iterator.mark_host_failed(original_host)
                    
                    
                    
                    state, _ = iterator.get_next_task_for_host(original_host, peek=True)