##### SUMMARY
If any ansible.cfg value that expects a boolean is set to a value other than "true" or "yes" it is interpreted as "false", which leads to difficult to debug issues. Invalid boolean values should report an error or, at the very least, a warning.

This is especially confusing when the user attempts to use an inline comment (see #10354) - the configuration file *looks* valid to anyone who doesn't know the implementation details, but doesn't do what it seemingly should. I was about to re-open #23912 because Ansible wasn't printing a diff even though I set `always = True # some comment` in ansible.cfg.

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
<!--- Write the short name of the module, plugin, task or feature below, use your best guess if unsure -->
ansible.cfg

##### ANSIBLE VERSION
<!--- Paste verbatim output from "ansible --version" between quotes -->
```paste below
ansible 2.9.6
  config file = /media/sf_work/lops/ansible/ansible.cfg
  configured module search path = [u'/home/evgeny/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/dist-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.17 (default, Nov  7 2019, 10:07:09) [GCC 7.4.0]
```

##### CONFIGURATION
<!--- Paste verbatim output from "ansible-config dump --only-changed" between quotes -->
```paste below
ANSIBLE_PIPELINING(/media/sf_work/lops/ansible/ansible.cfg) = True
DEFAULT_BECOME(/media/sf_work/lops/ansible/ansible.cfg) = True
DEFAULT_FILTER_PLUGIN_PATH(/media/sf_work/lops/ansible/ansible.cfg) = [u'/media/sf_work/lops/ansible/filter_plugins']
DEFAULT_HASH_BEHAVIOUR(/media/sf_work/lops/ansible/ansible.cfg) = merge
DEFAULT_LOG_PATH(/media/sf_work/lops/ansible/ansible.cfg) = /media/sf_work/lops/ansible/ansible.log
DEFAULT_ROLES_PATH(/media/sf_work/lops/ansible/ansible.cfg) = [u'/media/sf_work/lops/ansible/roles']
DEFAULT_STDOUT_CALLBACK(/media/sf_work/lops/ansible/ansible.cfg) = debug
DEFAULT_TRANSPORT(/media/sf_work/lops/ansible/ansible.cfg) = smart
DEFAULT_VAULT_PASSWORD_FILE(/media/sf_work/lops/ansible/ansible.cfg) = /home/evgeny/.ansible/password
DIFF_ALWAYS(/media/sf_work/lops/ansible/ansible.cfg) = True
INTERPRETER_PYTHON(/media/sf_work/lops/ansible/ansible.cfg) = auto_legacy_silent
RETRY_FILES_ENABLED(/media/sf_work/lops/ansible/ansible.cfg) = False
TRANSFORM_INVALID_GROUP_CHARS(/media/sf_work/lops/ansible/ansible.cfg) = ignore
```

##### OS / ENVIRONMENT
<!--- Provide all relevant information below, e.g. target OS versions, network device firmware, etc. -->
Ubuntu 18.04

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

<!--- Paste example playbooks or commands between quotes below -->
```ini
[privilege_escalation]
become = truee

[diff]
always = True # Always print diff
```

<!--- HINT: You can paste gist.github.com links for larger files -->

##### EXPECTED RESULTS
<!--- Describe what you expected to happen when running the steps above -->
Error (or at least warning) such as "Invalid boolean value for ansible.cfg setting 'become' in section 'privilege_escalation"

##### ACTUAL RESULTS
Ansible runs with become = false and always = false, so it does not attempt to use sudo and does not print the diff at the end.
'''
        Loads attributes from a dictionary
        '''
        for (attr, value) in iteritems(attrs):
            if attr in self._valid_attrs:
                attribute = self._valid_attrs[attr]
                if attribute.isa == 'class' and isinstance(value, dict):
                    obj = attribute.class_type()
                    obj.deserialize(value)
                    setattr(self, attr, obj)
                else:
                    setattr(self, attr, value)
    def serialize(self):
        '''
        Serializes the object derived from the base object into
        a dictionary of values. This only serializes the field
        attributes for the object, so this may need to be overridden
        for any classes which wish to add additional items not stored
        as field attributes.
        '''
        repr = self.dump_attrs()
        
        repr['uuid'] = self._uuid
        repr['finalized'] = self._finalized
        repr['squashed'] = self._squashed
        return repr
    def deserialize(self, data):