<!--- 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 -->
Using the file module to set the owner of a file to a numeric username is wrongly interpreted as setting the uid of a file.

##### ISSUE TYPE
- Documentation Report

##### COMPONENT NAME
<!--- Write the short name of the module, plugin, task or feature below, use your best guess if unsure -->
This affects the file module's 'owner' attribute/functionality and probably the 'group' functionality as well. 

##### ANSIBLE VERSION
<!--- Paste verbatim output from "ansible --version" between quotes -->
```paste below
ansible 2.9.2
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/alyjak/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /home/alyjak/.local/lib/python3.7/site-packages/ansible
  executable location = /home/alyjak/.local/bin/ansible
  python version = 3.7.3 (default, Apr  3 2019, 05:39:12) [GCC 8.3.0]
```

##### CONFIGURATION
<!--- Paste verbatim output from "ansible-config dump --only-changed" between quotes -->
```paste below
DEFAULT_CALLBACK_WHITELIST(/etc/ansible/ansible.cfg) = ['profile_roles']
DEFAULT_HOST_LIST(/etc/ansible/ansible.cfg) = ['/etc/ansible/inventory']
DEFAULT_ROLES_PATH(/etc/ansible/ansible.cfg) = ['/etc/ansible/roles']
DEFAULT_STDOUT_CALLBACK(/etc/ansible/ansible.cfg) = yaml
RETRY_FILES_ENABLED(/etc/ansible/ansible.cfg) = False
```

##### OS / ENVIRONMENT
<!--- Provide all relevant information below, e.g. target OS versions, network device firmware, etc. -->
```
$ uname -a
Linux alyjak-vbox-deb 4.19.0-6-amd64 #1 SMP Debian 4.19.67-2+deb10u2 (2019-11-11) x86_64 GNU/Linux
```

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

<!--- Paste example playbooks or commands between quotes below -->

Running the following example playbook using the following command is sufficient to reproduce this for me:
`ansible-playbook --ask-become-pass repro.yaml`

where `repro.yaml` looks like the following:

```yaml
- hosts: localhost
 become: yes                                                                                                                                                                                 
  become_user: root                                                                                                                                                                           
  tasks:                                                                                                                                                                                      
    - file:                                                                                                                                                                                   
        path: /tmp/bar.txt                                                                                                                                                                    
        state: touch                                                                                                                                                                          
                                                                                                                                                                                              
    - stat:                                                                                                                                                                                   
        path: /tmp/bar.txt                                                                                                                                                                    
      register: one                                                                                                                                                                           
                                                                                                                                                                                              
    - debug:                                                                                                                                                                                  
        var: one.stat                                                                                                                                                                         
                                                                                                                                                                                              
    - file:                                                                                                                                                                                   
        path: /tmp/bar.txt                                                                                                                                                                    
        owner: "1234"                                                                                                                                                                         
                                                                                                                                                                                              
    - stat:                                                                                                                                                                                   
        path: /tmp/bar.txt                                                                                                                                                                    
      register: two                                                                                                                                                                           
                                                                                                                                                                                              
    - debug:                                                                                                                                                                                  
        var: two.stat                                                                                                                                                                         
        
```

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

##### EXPECTED RESULTS
<!--- Describe what you expected to happen when running the steps above -->
I would expect this to mirror `chown` functionality, which afaik when given a numeric user will first try a uid lookup with the username (something like `id -u <name>` to see if the provided name is a username or uid before assuming the provided argument is a uid. Better yet, always assume user is a username and provide a different argument to set permissions based on a uid.

##### ACTUAL RESULTS
<!--- Describe what actually happened. If possible run with extra verbosity (-vvvv) -->
as can be seen in the example output, the uid is equal to the provided username.
<!--- Paste verbatim command output between quotes -->
```paste below
$ ansible-playbook --ask-become-pass test.yaml 
BECOME password: 
[WARNING]: Unable to parse /etc/ansible/inventory as an inventory source

[WARNING]: No inventory was parsed, only implicit localhost is available

[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'


PLAY [localhost] *****************************************************************************************************************************************************************************

TASK [Gathering Facts] ***********************************************************************************************************************************************************************
Thursday 16 January 2020  13:08:02 -0500 (0:00:00.038)       0:00:00.038 ****** 
ok: [localhost]

TASK [file] **********************************************************************************************************************************************************************************
Thursday 16 January 2020  13:08:03 -0500 (0:00:01.238)       0:00:01.276 ****** 
changed: [localhost]

TASK [stat] **********************************************************************************************************************************************************************************
Thursday 16 January 2020  13:08:04 -0500 (0:00:00.596)       0:00:01.873 ****** 
ok: [localhost]

TASK [debug] *********************************************************************************************************************************************************************************
Thursday 16 January 2020  13:08:04 -0500 (0:00:00.573)       0:00:02.446 ****** 
ok: [localhost] => 
  one.stat.uid: '0'

TASK [file] **********************************************************************************************************************************************************************************
Thursday 16 January 2020  13:08:04 -0500 (0:00:00.127)       0:00:02.573 ****** 
changed: [localhost]

TASK [stat] **********************************************************************************************************************************************************************************
Thursday 16 January 2020  13:08:05 -0500 (0:00:00.386)       0:00:02.960 ****** 
ok: [localhost]

TASK [debug] *********************************************************************************************************************************************************************************
Thursday 16 January 2020  13:08:05 -0500 (0:00:00.431)       0:00:03.391 ****** 
ok: [localhost] => 
  two.stat.uid: '1234'

PLAY RECAP ***********************************************************************************************************************************************************************************
localhost                  : ok=7    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

Thursday 16 January 2020  13:08:05 -0500 (0:00:00.125)       0:00:03.516 ****** 
=============================================================================== 
gather_facts ------------------------------------------------------------ 1.24s
stat -------------------------------------------------------------------- 1.00s
file -------------------------------------------------------------------- 0.98s
debug ------------------------------------------------------------------- 0.25s
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
total ------------------------------------------------------------------- 3.48s

```

type: str
  selevel:
    description:
    - The level part of the SELinux filesystem object context.
    - This is the MLS/MCS attribute, sometimes known as the C(range).
    - When set to C(_default), it will use the C(level) portion of the policy if available.
    type: str
  unsafe_writes:
    description:
    - Influence when to use atomic operation to prevent data corruption or inconsistent reads from the target filesystem object.
    - By default this module uses atomic operations to prevent data corruption or inconsistent reads from the target filesystem objects,
      but sometimes systems are configured or just broken in ways that prevent this. One example is docker mounted filesystem objects,
      which cannot be updated atomically from inside the container and can only be written in an unsafe manner.
    - This option allows Ansible to fall back to unsafe methods of updating filesystem objects when atomic operations fail
      (however, it doesn't force Ansible to perform unsafe writes).
    - IMPORTANT! Unsafe writes are subject to race conditions and can lead to data corruption.
    type: bool
    default: no
    version_added: '2.2'
  attributes:
    description:
    - The attributes the resulting filesystem object should have.
    - To get supported flags look at the man page for I(chattr) on the target system.
    - This string should contain the attributes in the same order as the one displayed by I(lsattr).
    - The C(=) operator is assumed as default, otherwise C(+) or C(-) operators need to be included in the string.
    type: str
    aliases: [ attr ]
    version_added: '2.3'
'''