Adds integration tests for gce module.
Adds integration tests for gce_pd module.
Adds support for creating GCE persistent disks from images
Adds support for creating GCE persistent disks from snapshots
Adds support for attaching persistent disks to GCE instances
Changes cleanup_gce.py to use gce_credentials module.
Adds version_added property to new attributes in gce and gce_pd.
Add run_once task key

This caused the task to act like  bypass host loop plugin and
execute only on a single host. Can be used with delegate_to
Allow public_key to be a path to a file
Add PTR record support to rax_dns_record
Fix portability issue when checking local facts file permission.
Add user_data and config_drive support
Switch functions over to kwargs to make it easier to manage in the future
Mention that user_data can be a file path or a string
Allow search_regex to be used in wait_for with port
Add rackconnect and managed cloud automation check examples
use the full list of available campfire sounds

From the list found [here](http://www.emoji-cheat-sheet.com/)
Allow deb package installation via with_items

Fixes #7863
Allow --vault-password-file to work with a script as well as a flat file
Correctly handle .repo files in zypper_repository module

Before the changes, removing a repository required a repo url. This shouldn't be required since zypper allows removing a repo based on its alias (mapped to name in this module).

The name variable was always required, which is misleading since repofiles provide their own alias. So a runtime check was added to avoid this confusion.

Additionaly, running this module on .repo files weren't idempotent. e.g

Before:
$ ./hacking/test-module -m library/packaging/zypper_repository -a "repo=http://download.opensuse.org/repositories/devel:/languages:/python/SLE_11_SP3/devel:languages:python.repo name=foo"
{"repo": "http://download.opensuse.org/repositories/devel:/languages:/python/SLE_11_SP3/devel:languages:python.repo", "state": "present", "changed": true}
$ ./hacking/test-module -m library/packaging/zypper_repository -a "repo=http://download.opensuse.org/repositories/devel:/languages:/python/SLE_11_SP3/devel:languages:python.repo name=foo"
{"msg": "Repository named 'devel_languages_python' already exists. Please use another alias.\n", "failed": true}

After:
$ ./hacking/test-module -m library/packaging/zypper_repository -a "repo=http://download.opensuse.org/repositories/devel:/languages:/python/SLE_11_SP3/devel:languages:python.repo"
{"repo": "http://download.opensuse.org/repositories/devel:/languages:/python/SLE_11_SP3/devel:languages:python.repo", "state": "present", "changed": true}
$ ./hacking/test-module -m library/packaging/zypper_repository -a "repo=http://download.opensuse.org/repositories/devel:/languages:/python/SLE_11_SP3/devel:languages:python.repo"
{"repo": "http://download.opensuse.org/repositories/devel:/languages:/python/SLE_11_SP3/devel:languages:python.repo", "state": "present", "changed": false}

Signed-off-by: Hector Acosta <hector.acosta@gmail.com>