Expose more facts about user on host system

Adds:
  - `user_uid`
  - `user_gid`
  - `user_gecos`
  - `user_dir`
  - `user_shell`

This is implemented with pure Python, using all built-in modules.

This is useful for writing playbooks that create a user on the remote system that resembles the invoking user on the host system. I've long wanted to have plays that set up my development VM with the same user that I use on my host system.

Example playbook:

```yaml
---
# Empty play just so that facts are gathered for localhost
- hosts: localhost

- hosts: vagrant
  sudo: yes
  tasks:
    - name: Create user for local user
      user: name="{{ hostvars['localhost']['ansible_user_id'] }}"
            comment="{{ hostvars['localhost']['ansible_user_gecos'] }}"
            uid="{{ hostvars['localhost']['ansible_user_uid'] }}"
            shell=/bin/bash

    - name: Add key to ~/.ssh/authorized_keys
      authorized_key: user={{ hostvars['localhost']['ansible_user_id'] }}
                      key="{{ lookup('file', '~/.ssh/id_rsa.pub') }}"
                      manage_dir=yes
```

Cc: @sontek, @aconrad, @sudarkoff