##### SUMMARY

I am creating a system user account for Jenkins workers, and I want to create the home directory myself, after the user is already created.  Ansible 2.8 let me, current devel branch fails.

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
user

##### ANSIBLE VERSION
```
ansible 2.9.0.dev0
  config file = /home/mg/src/deployments/provisioning/ansible.cfg
  configured module search path = [u'/home/mg/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /home/mg/src/ansible/lib/ansible
  executable location = /home/mg/src/ansible/bin/ansible
  python version = 2.7.16 (default, Apr  6 2019, 01:42:57) [GCC 8.3.0]
```

##### CONFIGURATION
<!--- Paste verbatim output from "ansible-config dump --only-changed" between quotes -->
```
ACTION_WARNINGS(/home/mg/src/deployments/provisioning/ansible.cfg) = False
CACHE_PLUGIN(/home/mg/src/deployments/provisioning/ansible.cfg) = jsonfile
CACHE_PLUGIN_CONNECTION(/home/mg/src/deployments/provisioning/ansible.cfg) = .cache/facts/
CACHE_PLUGIN_TIMEOUT(/home/mg/src/deployments/provisioning/ansible.cfg) = 86400
DEFAULT_CALLBACK_WHITELIST(/home/mg/src/deployments/provisioning/ansible.cfg) = [u'fancy_html']
DEFAULT_FORKS(/home/mg/src/deployments/provisioning/ansible.cfg) = 15
DEFAULT_GATHERING(/home/mg/src/deployments/provisioning/ansible.cfg) = smart
DEFAULT_HOST_LIST(/home/mg/src/deployments/provisioning/ansible.cfg) = [u'/home/mg/src/deployments/provisioning/inventory']
DEFAULT_LOG_PATH(/home/mg/src/deployments/provisioning/ansible.cfg) = /home/mg/src/deployments/provisioning/.cache/ansible.log
DEFAULT_REMOTE_USER(/home/mg/src/deployments/provisioning/ansible.cfg) = root
DEFAULT_STDOUT_CALLBACK(/home/mg/src/deployments/provisioning/ansible.cfg) = yaml
DEFAULT_VAULT_PASSWORD_FILE(/home/mg/src/deployments/provisioning/ansible.cfg) = /home/mg/src/deployments/provisioning/askpass.py
RETRY_FILES_ENABLED(/home/mg/src/deployments/provisioning/ansible.cfg) = False
```

##### OS / ENVIRONMENT
Ubuntu 19.04 on the controller, Ubuntu 16.04 and 18.04 on the targets.


##### STEPS TO REPRODUCE
```yaml
- hosts: all
  tasks:
    - name: create a user for the jenkins worker
      user: name=jenkins-worker home=/var/lib/jenkins-worker createhome=no shell=/bin/bash system=yes
      tags: [ jenkins, user ]

    - name: create /var/lib/jenkins-worker
      file: dest=/var/lib/jenkins-worker state=directory owner=jenkins-worker group=jenkins-worker
      tags: [ jenkins, user ]
```

##### EXPECTED RESULTS

I expect there to be a /var/lib/jenkins-worker, owner by jenkins-worker:jenkins-worker, with no dotfiles inside it.

##### ACTUAL RESULTS

<!--- Paste verbatim command output between quotes -->
```
TASK [jenkins-worker : create a user for the jenkins worker] ******************************************************************************************************************************************************
fatal: [xenial]: FAILED! => changed=false 
  msg: '[Errno 2] No such file or directory: ''/var/lib/jenkins-worker'''
fatal: [bionic]: FAILED! => changed=false 
  msg: '[Errno 2] No such file or directory: ''/var/lib/jenkins-worker'''
```

What's even more fun is that when I re-ran the playbook, it succeeded, and I don't understand what even is going on any more.
description:
            - Optionally set the user's password to this crypted value.
            - On macOS systems, this value has to be cleartext. Beware of security issues.
            - To create a disabled account on Linux systems, set this to C('!') or C('*').
            - See U(https://docs.ansible.com/ansible/faq.html#how-do-i-generate-encrypted-passwords-for-the-user-module)
              for details on various ways to generate these password values.
        type: str
    state:
        description:
            - Whether the account should exist or not, taking action if the state is different from what is stated.
        type: str
        choices: [ absent, present ]
        default: present
    create_home:
        description:
            - Unless set to C(no), a home directory will be made for the user
              when the account is created or if the home directory does not exist.
            - Changed from C(createhome) to C(create_home) in Ansible 2.5.
        type: bool
        default: yes
        aliases: [ createhome ]
    move_home:
        description:
            - "If set to C(yes) when used with C(home: ), attempt to move the user's old home
              directory to the specified directory if it isn't there already and the old home exists."
        type: bool
        default: no
    system:
        description:
            - When creating an account C(state=present), setting this to C(yes) makes the user a system account.