<!--- 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 -->
Running the [user module](https://docs.ansible.com/ansible/latest/modules/user_module.html) on Ansible `2.8.5` and `devel` branch to create a user on a Darwin system fails if the user already exists with an error: `Cannot update property "uid" for user "user"`
The issue exists in `lib/ansible/modules/system/user.py`

##### ISSUE TYPE
- Bug Report

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

##### ANSIBLE VERSION
<!--- Paste verbatim output from "ansible --version" between quotes -->
```paste below
ansible 2.10.0.dev0
  config file = /Users/johnchen/repos/buildhost-configuration3/scripts/macos_bootstrap/ansible.cfg
  configured module search path = [u'/Users/johnchen/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /Users/johnchen/repos/ansible/lib/ansible
  executable location = /Users/johnchen/repos/ansible/bin/ansible
  python version = 2.7.10 (default, Feb 22 2019, 21:55:15) [GCC 4.2.1 Compatible Apple LLVM 10.0.1 (clang-1001.0.37.14)]
```

##### CONFIGURATION
<!--- Paste verbatim output from "ansible-config dump --only-changed" between quotes -->
```paste below
HOST_KEY_CHECKING(ansible.cfg) = False
RETRY_FILES_ENABLED(ansible.cfg) = False
```

##### OS / ENVIRONMENT
<!--- Provide all relevant information below, e.g. target OS versions, network device firmware, etc. -->
macOS 10.14.5 (18F132)
Kernel Version: Darwin 18.6.0

##### STEPS TO REPRODUCE
<!--- Describe exactly how to reproduce the problem, using a minimal test-case -->
Run the user task on a macOS host to create a user with any name and uid. The first run should complete successfully. Any subsequent runs will result in the mentioned failure.
<!--- Paste example playbooks or commands between quotes below -->
```yaml
- name: Add Mac User
  become: true
  user:
    name: "test"
    uid: "500"
```

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

##### EXPECTED RESULTS
<!--- Describe what you expected to happen when running the steps above -->
Play Recap should show no changes on second run.
Example:
```
ok: [127.0.0.1] => (item={u'uid': 500, u'name': u'test'})
```

##### ACTUAL RESULTS
<!--- Describe what actually happened. If possible run with extra verbosity (-vvvv) -->
The second run of the playbook fails with a `Cannot update property` error
<!--- Paste verbatim command output between quotes -->
```paste below
failed: [127.0.0.1] (item={u'uid': u'500', u'name': u'test'}) => {"ansible_loop_var": "item", "changed": false, "err": "", "item": {"name": "test", "uid": "500"}, "msg": "Cannot update property \"uid\" for user \"test\".", "out": "", "rc": 40}
```

cmd.append(self.login_class)
        if self.update_password == 'always' and self.password is not None and info[1] != self.password:
            cmd.append('-p')
            cmd.append(self.password)
        if self.password_lock and not info[1].startswith('*LOCKED*'):
            cmd.append('-C yes')
        elif self.password_lock is False and info[1].startswith('*LOCKED*'):
            cmd.append('-C no')
        
        if len(cmd) == 1:
            return (None, '', '')
        cmd.append(self.name)
        return self.execute_command(cmd)
class SunOS(User):
    """
    This is a SunOS User manipulation class - The main difference between
    this class and the generic user class is that Solaris-type distros
    don't support the concept of a "system" account and we need to
    edit the /etc/shadow file manually to set a password. (Ugh)
    This overrides the following methods from the generic class:-
      - create_user()
      - remove_user()
      - modify_user()
      - user_info()
    """
    platform = 'SunOS'
    distribution = None
    SHADOWFILE = '/etc/shadow'
    USER_ATTR = '/etc/user_attr'
    def get_password_defaults(self):