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
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
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>
Show delegate_to hint in callbacks
Fix #8047

Ensure that json is returned when only updating the cache and in check mode
Make 'compress' optional
Ensure version is a string
Correct typo
Fix indentation in ec2.py
Merge pull request #7477 from sivel/rax-user-data

rax module: Support config_drive and user_data
Merge pull request #7478 from sivel/rax-keypair-filepath

rax_keypair module: Allow public_key to be a path to a file
Fix the name of the package that provides apt-add-repository on Ubuntu
Merge pull request #7650 from sivel/guide-rax-automation

Rax Guide: Add RackConnect and Managed Cloud automation check examples