<!--- 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}
```

if self.local:
            command_name = 'lusermod'
        else:
            command_name = 'usermod'
        cmd = [self.module.get_bin_path(command_name, True)]
        info = self.user_info()
        has_append = self._check_usermod_append()
        if self.uid is not None and info[2] != int(self.uid):
            cmd.append('-u')
            cmd.append(self.uid)
            if self.non_unique:
                cmd.append('-o')
        if self.group is not None:
            if not self.group_exists(self.group):
                self.module.fail_json(msg="Group %s does not exist" % self.group)
            ginfo = self.group_info(self.group)
            if info[3] != ginfo[2]:
                cmd.append('-g')
                cmd.append(self.group)
        if self.groups is not None:
            
            current_groups = self.user_group_membership(exclude_primary=False)
            groups_need_mod = False
            groups = []
            if self.groups == '':
                if current_groups and not self.append: