Allow modules to "invoke" add_host

Currently when cloud modules create new hosts, it is typical that people will run `add_host` afterwards to make each new host available to ansible during it's run time.

This pull request will enable the module to return a top level key called `add_host` that is a list of dictionaries.  The dictionaries returned will be used in populating hosts and groups just as the `add_host` module would.

Example module (called "foo" in test playbook below):
```python
#!/usr/bin/python

import json

foo = {
    "add_host": [
        {
            "name": "foo",
            "groups": "bar",
            "baz": "qux",
        }
    ]
}

print json.dumps(foo, indent=4, sort_keys=True)
```

Test playbook:
```
---
- hosts: localhost
  connection: local
  gather_facts: false
  tasks:
    - action: foo
    - add_host: name=test groups=testgroup something=else
    - assert:
        that: groups.keys() == ['bar', 'all', 'testgroup']
    - assert:
        that: hostvars['foo'] is mapping
    - assert:
        that: hostvars['test'] is mapping
    - assert:
        that: hostvars['foo']['baz'] == 'qux'
    - assert:
        that: hostvars['test']['something'] == 'else'
```

Output (with -vv):
```

PLAY [localhost] ************************************************************** 

TASK: [foo] ******************************************************************* 
<localhost> REMOTE_MODULE foo
ok: [localhost] => {"add_host": [{"baz": "qux", "groups": "bar", "name": "foo"}]}
creating host via 'add_host': hostname=foo
added host to group via add_host module: bar

TASK: [add_host name=test groups=testgroup something=else] ******************** 
creating host via 'add_host': hostname=test
added host to group via add_host module: testgroup
ok: [localhost] => {"new_groups": ["testgroup"], "new_host": "test"}

TASK: [assert ] *************************************************************** 
ok: [localhost] => {"msg": "all assertions passed"}

TASK: [assert ] *************************************************************** 
ok: [localhost] => {"msg": "all assertions passed"}

TASK: [assert ] *************************************************************** 
ok: [localhost] => {"msg": "all assertions passed"}

TASK: [assert ] *************************************************************** 
ok: [localhost] => {"msg": "all assertions passed"}

TASK: [assert ] *************************************************************** 
ok: [localhost] => {"msg": "all assertions passed"}

PLAY RECAP ******************************************************************** 
localhost                  : ok=7    changed=0    unreachable=0    failed=0   
```