### Summary

The apt module runs `aptitude` on the target host. When `fail_on_autoremove=yes`, the `--no-remove` switch is added to the command line. This switch is valid for `apt`, but not for `aptitude`, so the command fails.

### Issue Type

Bug Report

### Component Name

apt

### Ansible Version

```console
$ ansible --version
[DEPRECATION WARNING]: Ansible will require Python 3.8 or newer on the controller starting with Ansible 2.12. Current version:
3.7.3 (default, Jan 22 2021, 20:04:44) [GCC 8.3.0]. This feature will be removed from ansible-core in version 2.12. Deprecation
warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
ansible [core 2.11.9]
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.7/dist-packages/ansible
  ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/local/bin/ansible
  python version = 3.7.3 (default, Jan 22 2021, 20:04:44) [GCC 8.3.0]
  jinja version = 3.0.3
  libyaml = True
```


### Configuration

```console
$ ansible-config dump --only-changed -t all
[DEPRECATION WARNING]: Ansible will require Python 3.8 or newer on the controller starting with Ansible 2.12. Current version:
3.7.3 (default, Jan 22 2021, 20:04:44) [GCC 8.3.0]. This feature will be removed from ansible-core in version 2.12. Deprecation
warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
usage: ansible-config [-h] [--version] [-v] {list,dump,view} ...
ansible-config: error: unrecognized arguments: -t all

usage: ansible-config [-h] [--version] [-v] {list,dump,view} ...

View ansible configuration.

positional arguments:
  {list,dump,view}
    list            Print all config options
    dump            Dump configuration
    view            View configuration file

optional arguments:
  --version         show program's version number, config file location,
                    configured module search path, module location, executable
                    location and exit
  -h, --help        show this help message and exit
  -v, --verbose     verbose mode (-vvv for more, -vvvv to enable connection
                    debugging)
```


### OS / Environment

Debian 10, aptitude 0.8.11

### Steps to Reproduce

<!--- Paste example playbooks or commands between quotes below -->
```
ansible 'all:!internal_windows:!ucs' -b -m apt -a "update_cache=yes upgrade=yes fail_on_autoremove=yes"
```


### Expected Results

Expected target servers' apt packages to be upgraded.

### Actual Results

```console
tallis | FAILED! => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "msg": "'/usr/bin/aptitude safe-upgrade' failed: /usr/bin/aptitude: unrecognized option '--no-remove'\n",
    "rc": 1,
    "stdout": "aptitude 0.8.11\nUsage: aptitude [-S fname] [-u|-i]\n       aptitude [options] <action> ...\n\nActions (if none is specified, aptitude will enter interactive mode):\n\n install         Install/upgrade packages.\n remove          Remove packages.\n purge           Remove packages and their configuration files.\n hold            Place packages on hold.\n unhold          Cancel a hold command for a package.\n markauto        Mark packages as having been automatically installed.\n unmarkauto      Mark packages as having been manually installed.\n forbid-version  Forbid aptitude from upgrading to a specific package version.\n update
Download lists of new/upgradable packages.\n safe-upgrade    Perform a safe upgrade.\n full-upgrade    Perform an upgrade, possibly installing and removing packages.\n build-dep       Install the build-dependencies of packages.\n forget-new      Forget what packages are \"new\".\n search          Search for a package by name and/or expression.\n show            Display detailed info about a package.\n showsrc         Display detailed info about a source package (apt wrapper).\n versions        Displays the versions of specified packages.\n clean           Erase downloaded package files.\n autoclean       Erase old downloaded package files.\n changelog       View a package's changelog.\n download        Download the .deb file for a package (apt wrapper).\n source          Download source package (apt wrapper).\n reinstall       Reinstall a currently installed package.\n why             Explain why a particular package should be installed.\n why-not         Explain why a particular package cannot be installed.\n\n add-user-tag    Add user tag to packages/patterns.\n remove-user-tag Remove user tag from packages/patterns.\n\nOptions:\n -h              This help text.\n --no-gui        Do not use the GTK GUI even if available.\n -s              Simulate actions, but do not actually perform them.\n -d              Only download packages, do not install or remove anything.\n -P              Always prompt for confirmation of actions.\n -y              Assume that the answer to simple yes/no questions is 'yes'.\n -F format       Specify a format for displaying search results; see the manual.\n -O order        Specify how search results should be sorted; see the manual.\n -w width        Specify the display width for formatting search results.\n -f              Aggressively try to fix broken packages.\n -V              Show which versions of packages are to be installed.\n -D              Show the dependencies of automatically changed packages.\n -Z              Show the change in installed size of each package.\n -v              Display extra information. (may be supplied multiple times).\n -t [release]    Set the release from which packages should be installed.\n -q              In command-line mode, suppress the incremental progress\n                  indicators.\n -o key=val      Directly set the configuration option named 'key'.\n --with(out)-recommends     Specify whether or not to treat recommends as\n                            strong dependencies.\n -S fname        Read the aptitude extended status info from fname.\n -u              Download new package lists on startup.\n                  (terminal interface only)\n -i              Perform an install run on startup.\n                  (terminal interface only)\n\nSee the manual page for a complete list and description of all the options.\n\nThis aptitude does not have Super Cow Powers.\n",
    "stdout_lines": [
        "aptitude 0.8.11",
        "Usage: aptitude [-S fname] [-u|-i]",
        "       aptitude [options] <action> ...",
        "",
        "Actions (if none is specified, aptitude will enter interactive mode):",
        "",
        " install         Install/upgrade packages.",
        " remove          Remove packages.",
        " purge           Remove packages and their configuration files.",
        " hold            Place packages on hold.",
        " unhold          Cancel a hold command for a package.",
        " markauto        Mark packages as having been automatically installed.",
        " unmarkauto      Mark packages as having been manually installed.",
        " forbid-version  Forbid aptitude from upgrading to a specific package version.",
        " update          Download lists of new/upgradable packages.",
        " safe-upgrade    Perform a safe upgrade.",
        " full-upgrade    Perform an upgrade, possibly installing and removing packages.",
        " build-dep       Install the build-dependencies of packages.",
        " forget-new      Forget what packages are \"new\".",
        " search          Search for a package by name and/or expression.",
        " show            Display detailed info about a package.",
        " showsrc         Display detailed info about a source package (apt wrapper).",
        " versions        Displays the versions of specified packages.",
        " clean           Erase downloaded package files.",
        " autoclean       Erase old downloaded package files.",
        " changelog       View a package's changelog.",
        " download        Download the .deb file for a package (apt wrapper).",
        " source          Download source package (apt wrapper).",
        " reinstall       Reinstall a currently installed package.",
        " why             Explain why a particular package should be installed.",
        " why-not         Explain why a particular package cannot be installed.",
        "",
        " add-user-tag    Add user tag to packages/patterns.",
        " remove-user-tag Remove user tag from packages/patterns.",
        "",
        "Options:",
        " -h              This help text.",
        " --no-gui        Do not use the GTK GUI even if available.",
        " -s              Simulate actions, but do not actually perform them.",
        " -d              Only download packages, do not install or remove anything.",
        " -P              Always prompt for confirmation of actions.",
        " -y              Assume that the answer to simple yes/no questions is 'yes'.",
        " -F format       Specify a format for displaying search results; see the manual.",
        " -O order        Specify how search results should be sorted; see the manual.",
        " -w width        Specify the display width for formatting search results.",
        " -f              Aggressively try to fix broken packages.",
        " -V              Show which versions of packages are to be installed.",
        " -D              Show the dependencies of automatically changed packages.",
        " -Z              Show the change in installed size of each package.",
        " -v              Display extra information. (may be supplied multiple times).",
        " -t [release]    Set the release from which packages should be installed.",
        " -q              In command-line mode, suppress the incremental progress",
        "                  indicators.",
        " -o key=val      Directly set the configuration option named 'key'.",
        " --with(out)-recommends     Specify whether or not to treat recommends as",
        "                            strong dependencies.",
        " -S fname        Read the aptitude extended status info from fname.",
        " -u              Download new package lists on startup.",
        "                  (terminal interface only)",
        " -i              Perform an install run on startup.",
        "                  (terminal interface only)",
        "",
        "See the manual page for a complete list and description of all the options.",
        "",
        "This aptitude does not have Super Cow Powers."
    ]
}
```


### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
updated_cache_time = post_cache_update_time
                # If 
                #  c
                if not p['package'] and not p['upgrade'] and not p['deb']:
                    module.exit_json(
                        changed=updated_cache,
                        cache_updated=updated_cache,
                        cache_update_time=updated_cache_time
                    )
            force_yes = p['force']
            if p['upgrade']:
                upgrade(
                    module,
                    p['upgrade'],
                    force_yes,
                    p['default_release'],
                    use_apt_get,
                    dpkg_options,
                    autoremove,
                    fail_on_autoremove,
                    allow_unauthenticated,
                    allow_downgrade
                )
            if p['deb']:
                if p['state'] != 'present':
                    module.fail_json(msg="deb only supports state=present")
                if '://' in p['deb']:
                    p['deb'] = fetch_file(module, p['deb'])
                install_deb(module, p['deb'], cache,
                            install_recommends=install_recommends,