### Summary

When validating `argument_spec` for a role the error message always suggest `Supported parameters include: <list of main options>` even if the error is for a missing sub-option.

### Issue Type

Bug Report

### Component Name

/lib/ansible/module_utils/common/arg_spec.py

### Ansible Version

```console
ansible [core 2.11.4] 
  config file = None
  configured module search path = ['/home/holbech/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.8/dist-packages/ansible
  ansible collection location = /home/holbech/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/local/bin/ansible
  python version = 3.8.10 (default, Jun  2 2021, 10:49:15) [GCC 9.4.0]
  jinja version = 2.11.3
  libyaml = True
```


### Configuration

```console
None
```


### OS / Environment

Ubuntu 20.04

### Steps to Reproduce

<!--- Paste example playbooks or commands between quotes below -->
Input Data:
```yaml
access_lists:
- name: ACL-TEST
  sequence_numbers:
  - action: permit ip 4.5.6.0/23 1.2.3.0/24
    sequence: 10
  - ac_typo_ion: deny tcp any eq 80 any
    sequence: 5
```

Argument_spec
```yaml (paste below)
argument_specs:
  main:
    options:
      access_lists:
        description: IP Extended Access-Lists
        type: list
        elements: dict
        options:
          name:
            type: str
            description: Access-List Name
            unique: true
            required: true
          sequence_numbers:
            type: list
            description: List of ACL Lines
            elements: dict
            required: true
            options:
              sequence:
                type: int
                description: Sequence ID
                unique: true
                required: true
              action:
                type: str
                description: Action as string
                required: true
      ipv6_standard_access_lists:
         # same as above but removed here for brevity
```


### Expected Results

Since the missing required key in the input data is under the sub-option `sequence_numbers` the error message should list the "supported parameters" from this option - in this case `sequence, action`. Instead it only listed the main options in the argument_spec.

### Actual Results

```console
TASK [arista.avd.eos_cli_config_gen : Validating arguments against arg spec 'main'] ***
task path: /home/holbech/ansible-avd/ansible_collections/arista/avd/molecule/eos_cli_config_gen/converge.yml:2
fatal: [access-lists -> 127.0.0.1]: FAILED! => {
    "argument_errors": [
        "missing required arguments: action found in access_lists -> sequence_numbers",
        "access_lists.sequence_numbers.ac_typo_ion. Supported parameters include: ipv6_standard_access_lists, access_lists."
    ],
    "argument_spec_data": {
        "access_lists": {
            "description": "IP Extended Access-Lists",
            "elements": "dict",
            "options": {
                "name": {
                    "description": "Access-List Name",
                    "required": true,
                    "type": "str",
                    "unique": true
                },
                "sequence_numbers": {
                    "description": "List of ACL Lines",
                    "elements": "dict",
                    "options": {
                        "action": {
                            "description": "Action as string",
                            "required": true,
                            "type": "str"
                        },
                        "sequence": {
                            "description": "Sequence ID",
                            "required": true,
                            "type": "int",
                            "unique": true
                        }
                    },
                    "required": true,
                    "type": "list"
                }
            },
            "type": "list"
        },
        "ipv6_standard_access_lists": {
            "description": "IPv6 Standard Access-lists",
            "elements": "dict",
            "options": {
                "name": {
                    "description": "Access-list Name",
                    "required": true,
                    "type": "str",
                    "unique": true
                },
                "sequence_numbers": {
                    "elements": "dict",
                    "options": {
                        "action": {
                            "description": "Action as string",
                            "required": true,
                            "type": "str"
                        },
                        "sequence": {
                            "description": "Sequence ID",
                            "required": true,
                            "type": "int",
                            "unique": true
                        }
                    },
                    "required": true,
                    "type": "list"
                }
            },
            "type": "list"
        }
    },
    "changed": false,
    "msg": "Validation of arguments failed:\nmissing required arguments: action found in access_lists -> sequence_numbers\naccess_lists.sequence_numbers.ac_typo_ion. Supported parameters include: ipv6_standard_access_lists, access_lists.",
    "validate_args_context": {
        "argument_spec_name": "main",
        "name": "eos_cli_config_gen",
        "path": "/home/holbech/ansible-avd/ansible_collections/arista/avd/roles/eos_cli_config_gen",
        "type": "role"
    }
}
```


### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
"""
    Helper function for :meth:`remove_values`.
    :arg value: The value to check for strings that need to be stripped
    :arg no_log_strings: set of strings which must be stripped out of any values
    :arg deferred_removals: List which holds information about nested
        containers that have to be iterated for removals.  It is passed into
        this function so that more entries can be added to it if value is
        a container type.  The format of each entry is a 2-tuple where the first
        element is the ``value`` parameter and the second value is a new
        container to copy the elements of ``value`` into once iterated.
    :returns: if ``value`` is a scalar, returns ``value`` with two exceptions:
        1. :class:`~datetime.datetime` objects which are changed into a string representation.
        2. objects which are in ``no_log_strings`` are replaced with a placeholder
           so that no sensitive data is leaked.
        If ``value`` is a container type, returns a new empty container.
    ``deferred_removals`` is added to as a side-effect of this function.
    .. warning:: It is up to the caller to make sure the order in which value
        is passed in is correct.  For instance, higher level containers need