### Summary

When a task is named with the word meta (like `- name: "meta"`), the task fails with the following error : 
```
ERROR! Unexpected Exception, this is probably a bug: '_raw_params'
```


### Issue Type

Bug Report

### Component Name

all

### Ansible Version

```console
$ ansible --version
ansible 2.10.8
  config file = /home/utilisateur/ansible/prj_chainage_traitement/ansible.cfg
  configured module search path = ['/home/utilisateur/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3/dist-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.9.2 (default, Feb 28 2021, 17:03:44) [GCC 10.2.1 20210110]
```



### OS / Environment

Linux Debian 11.1

### Steps to Reproduce

The following playbook reproduces this issue : 
```yaml
- hosts: localhost
  gather_facts: no
  connection: localhost
  tasks:
    - name: "meta"
      debug:
        msg: "abcdefgh"
```
 

### Expected Results

You should obtain : 
```
TASK [meta] 
ok: [localhost] => {
	"msg": "abcdefgh"
}
``` 

When name is changed (ex.: `- name: "meta"`), there is no error.

Ansible should generate an error when the user tries to name a task `meta`.

### Actual Results


The following error is returned : 

```console
PLAY [localhost] ***********
ERROR! Unexpected Exception, this is probably a bug: '_raw_params'
to see the full traceback, use -vvv
```

With verbose mode, a Python exception is returned : 
```
PLAY [localhost] *******************
META: ran handlers
ERROR! Unexpected Exception, this is probably a bug: '_raw_params'
the full traceback was:

Traceback (most recent call last):
  File "/usr/bin/ansible-playbook", line 123, in <module>
	exit_code = cli.run()
  File "/usr/lib/python3/dist-packages/ansible/cli/playbook.py", line 129, in run
	results = pbex.run()
  File "/usr/lib/python3/dist-packages/ansible/executor/playbook_executor.py", line 169, in run
	result = self._tqm.run(play=play)
  File "/usr/lib/python3/dist-packages/ansible/executor/task_queue_manager.py", line 281, in run
	play_return = strategy.run(iterator, play_context)
  File "/usr/lib/python3/dist-packages/ansible/plugins/strategy/linear.py", line 224, in run
	host_tasks = self._get_next_task_lockstep(hosts_left, iterator)
  File "/usr/lib/python3/dist-packages/ansible/plugins/strategy/linear.py", line 97, in _get_next_task_lockstep
	host_tasks[host.name] = iterator.get_next_task_for_host(host, peek=True)
  File "/usr/lib/python3/dist-packages/ansible/executor/play_iterator.py", line 253, in get_next_task_for_host
	display.debug(" ^ task is: %s" % task)
  File "/usr/lib/python3/dist-packages/ansible/playbook/task.py", line 156, in __repr__
	return "TASK: meta (%s)" % self.args['_raw_params']
KeyError: '_raw_params'
```
```


### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
'''
        changed_when is evaluated after the execution of the task is complete,
        and should not be templated during the regular post_validate step.
        '''
        return value
    def _post_validate_failed_when(self, attr, value, templar):
        '''
        failed_when is evaluated after the execution of the task is complete,
        and should not be templated during the regular post_validate step.
        '''
        return value
    def _post_validate_until(self, attr, value, templar):
        '''
        until is evaluated after the execution of the task is complete,
        and should not be templated during the regular post_validate step.
        '''
        return value
    def get_vars(self):
        all_vars = dict()
        if self._parent:
            all_vars |= self._parent.get_vars()
        all_vars |= self.vars
        if 'tags' in all_vars:
            del all_vars['tags']
        if 'when' in all_vars:
            del all_vars['when']
        return all_vars
    def get_include_params(self):