<!--- 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 -->
On Ansible 2.9.10, setting `ansible_become` to any non-empty string in an `ini`-formatted inventory file causes the `become` plugin to be loaded and used, whereas Ansible 2.9.9 (and below) skipped the `become` plugin load if `ansible_become` was equal to "no" or "false".

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
<!--- Write the short name of the module, plugin, task or feature below, use your best guess if unsure -->
Task executor (`lib/ansible/executor/task_executor.py`).

##### ANSIBLE VERSION
<!--- Paste verbatim output from "ansible --version" between quotes -->
```paste below
ansible 2.9.10
  config file = None
  configured module search path = ['/home/kylian/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /home/kylian/.local/lib/python3.8/site-packages/ansible
  executable location = /home/kylian/.local/bin/ansible
  python version = 3.8.0 (default, Oct 28 2019, 16:14:01) [GCC 8.3.0]
```

##### CONFIGURATION
<!--- Paste verbatim output from "ansible-config dump --only-changed" between quotes -->
```paste below
(empty output)
```

##### OS / ENVIRONMENT
<!--- Provide all relevant information below, e.g. target OS versions, network device firmware, etc. -->
Tested on Ubuntu 18.04 (`Linux kylian-ubuntu 5.3.0-1028-azure #29~18.04.1-Ubuntu SMP Fri Jun 5 14:32:34 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux`), but probably affects all OS.

##### STEPS TO REPRODUCE
<!--- Describe exactly how to reproduce the problem, using a minimal test-case -->

<!--- Paste example playbooks or commands between quotes below -->
`test_playbook.yml`
```yaml
- hosts: all
  tasks:
    - debug:
        msg: "Message"
```

`inventory`
```ini
[windows]
win1 ansible_host=x.x.x.x ansible_become=no ansible_connection=winrm ansible_user=<user> ansible_password=<pwd>
```

`win1` is a Windows host. I'm using a Windows host as target as the results are easily visible (loading the default `become` plugin, `sudo`, results in a run failure).

Command to run:
`ansible-playbook ./test_playbook.yml -i inventory`

##### EXPECTED RESULTS
<!--- Describe what you expected to happen when running the steps above -->

Here is the result of the playbook run on Ansible 2.9.9:
```
PLAY [all] ***********************************************************************************************************************************************************************
/usr/lib/python3/dist-packages/Crypto/Random/Fortuna/FortunaGenerator.py:28: SyntaxWarning: "is" with a literal. Did you mean "=="?
  if sys.version_info[0] is 2 and  sys.version_info[1] is 1:
/usr/lib/python3/dist-packages/Crypto/Random/Fortuna/FortunaGenerator.py:28: SyntaxWarning: "is" with a literal. Did you mean "=="?
  if sys.version_info[0] is 2 and  sys.version_info[1] is 1:

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

TASK [debug] *********************************************************************************************************************************************************************
ok: [win1] => {
    "msg": "Message"
}

PLAY RECAP ***********************************************************************************************************************************************************************
win1                       : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
```

##### ACTUAL RESULTS
<!--- Describe what actually happened. If possible run with extra verbosity (-vvvv) -->
The `sudo` become plugin gets loaded, even though `ansible_become` was set to "no", causing the run to fail (since the sudo plugin doesn't work with Powershell).

<!--- Paste verbatim command output between quotes -->
```paste below
PLAY [all] ***********************************************************************************************************************************************************************
/usr/lib/python3/dist-packages/Crypto/Random/Fortuna/FortunaGenerator.py:28: SyntaxWarning: "is" with a literal. Did you mean "=="?
  if sys.version_info[0] is 2 and  sys.version_info[1] is 1:
/usr/lib/python3/dist-packages/Crypto/Random/Fortuna/FortunaGenerator.py:28: SyntaxWarning: "is" with a literal. Did you mean "=="?
  if sys.version_info[0] is 2 and  sys.version_info[1] is 1:

TASK [Gathering Facts] ***********************************************************************************************************************************************************
fatal: [win1]: FAILED! => {"msg": "The powershell shell family is incompatible with the sudo become plugin"}

PLAY RECAP ***********************************************************************************************************************************************************************
win1                       : ok=0    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0
```

I believe this comes from the fact that [this line](https://github.com/ansible/ansible/blob/devel/lib/ansible/executor/task_executor.py#L821) (added in #69244, present in [v2.9.10](https://github.com/ansible/ansible/blob/v2.9.10/lib/ansible/executor/task_executor.py#L905)) only checks if `ansible_become` is not a falsey value. Non-empty strings are truthy values, and `cvars['ansible_become']` is a non-empty string (`u'no'`) in that case (verified by printing the contents of `cvars` before the offending line).

Not setting `ansible_become` at all gives the expected result (since the playbook itself doesn't use the `become` plugin).

I'm not familiar with the Ansible codebase, but I think using something like [`check_type_bool`](https://github.com/ansible/ansible/blob/73139df36cf2da3e9926057e8137bda6e41cb2fb/lib/ansible/module_utils/common/validation.py#L436-L452) on `ansible_become` that's retrieved from the inventory file could fix the issue.

Note: I haven't been able to confirm yet if this also happens on the `devel` branch (I'm getting `The module setup was redirected to ansible.windows.setup, which could not be loaded.` errors on `2.11.0.dev0`).
for k in variables:
                if k.startswith('ansible_%s_' % self._connection._load_name) and k not in options:
                    options['_extras'][k] = templar.template(variables[k])
        task_keys = self._task.dump_attrs()
        if self._play_context.password:
            
            
            
            
            task_keys['password'] = self._play_context.password
        
        self._connection.set_options(task_keys=task_keys, var_options=options)
        varnames.extend(self._set_plugin_options('shell', variables, templar, task_keys))
        if self._connection.become is not None:
            if self._play_context.become_pass:
                
                
                
                
                task_keys['become_pass'] = self._play_context.become_pass
            varnames.extend(self._set_plugin_options('become', variables, templar, task_keys))
            
            for option in ('become_user', 'become_flags', 'become_exe', 'become_pass'):
                try:
                    setattr(self._play_context, option, self._connection.become.get_option(option))
                except KeyError:
                    pass  
            self._play_context.prompt = self._connection.become.prompt
        return varnames
    def _get_action_handler(self, connection, templar):