<!--- 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`).
'''
        Runs the task with the loop items specified and collates the result
        into an array named 'results' which is inserted into the final result
        along with the item for which the loop ran.
        '''
        results = []
        
        
        
        task_vars = self._job_vars
        loop_var = 'item'
        index_var = None
        label = None
        loop_pause = 0
        extended = False
        templar = Templar(loader=self._loader, shared_loader_obj=self._shared_loader_obj, variables=self._job_vars)
        
        if self._task.loop_control:
            loop_var = templar.template(self._task.loop_control.loop_var)
            index_var = templar.template(self._task.loop_control.index_var)
            loop_pause = templar.template(self._task.loop_control.pause)
            extended = templar.template(self._task.loop_control.extended)
            
            label = self._task.loop_control.label
        
        if label is None:
            label = '{{' + loop_var + '}}'
        if loop_var in task_vars:
            display.warning(u"The loop variable '%s' is already in use. "