https://github.com/ansible/ansible/blob/adcdee9bb0031577698246fcfc51f8af63a56a17/lib/ansible/playbook/task.py#L124

##### SUMMARY
Handlers can not be referenced with the `FQCN : handler name` notation if the handler name contains the role name.

Not sure what the reasoning is behind this, but a `httpd` role can't have a `restart httpd` handler name if you want to notify it with `notify: 'httpd : restart httpd'`

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
task handler fqcn

##### ANSIBLE VERSION
```
ansible 2.9.10
  config file = /home/twouters/.ansible.cfg
  configured module search path = ['/home/twouters/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.8/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.8.3 (default, May 17 2020, 18:15:42) [GCC 10.1.0]
```

##### CONFIGURATION
Default configuration

##### OS / ENVIRONMENT
All (N/A)

##### STEPS TO REPRODUCE
```
➜  issues-70582 $ find ./
./
./roles
./roles/test
./roles/test/handlers
./roles/test/handlers/main.yml
./roles/test/tasks
./roles/test/tasks/main.yml
./pb.yml
```

`pb.yml`
```yaml
---

- hosts: localhost
  roles:
    - test
```

`roles/test/tasks/main.yml`
```yaml
---

- name: always trigger handler
  command: /bin/true
  changed_when: True
  notify:
    - 'test : handler 1'

- name: always trigger handler 2
  command: /bin/true
  changed_when: True
  notify:
    - 'test : handler 2 test'
```

`roles/test/handlers/main.yml`
```yaml
---

- name: handler 1
  debug:
    msg: this is handler 1

- name: handler 2 test
  debug:
    msg: this handler is not found
```

##### EXPECTED RESULTS
Two handlers are detected.

##### ACTUAL RESULTS
Only the handler that doesn't contain the role name in its name gets detected

```
➜  issues-70582 $ ansible-playbook pb.yml           
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not
match 'all'

PLAY [localhost] ***********************************************************************************************

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

TASK [test : always trigger handler] ***************************************************************************
changed: [localhost]

TASK [test : always trigger handler 2] *************************************************************************
ERROR! The requested handler 'test : handler 2 test' was not found in either the main handlers list nor in the listening handlers list
```
try:
            super(Task, self)._validate_attributes(ds)
        except AnsibleParserError as e:
            e.message += '\nThis error can be suppressed as a warning using the "invalid_task_attribute_failed" configuration'
            raise e
    def post_validate(self, templar):
        '''
        Override of base class post_validate, to also do final validation on
        the block and task include (if any) to which this task belongs.
        '''
        if self._parent:
            self._parent.post_validate(templar)
        if AnsibleCollectionConfig.default_collection:
            pass
        super(Task, self).post_validate(templar)
    def _post_validate_loop(self, attr, value, templar):
        '''
        Override post validation for the loop field, which is templated
        specially in the TaskExecutor class when evaluating loops.
        '''
        return value
    def _post_validate_environment(self, attr, value, templar):
        '''
        Override post validation of vars on the play, as we don't want to
        template these too early.
        '''
        env = {}
        if value is not None:
            def _parse_env_kv(k, v):