Add support for installing a module via scp from the test controller
(#15699) Add methods for resolving and more adequately stubbing the forge host

This patch includes the new 'forge' method which looks up the host using the
following mechanisms:

* return the host with the 'forge' role assigned to it
* return the value of 'forge_host' in the CONFIG hash
* default to returning 'forge-acceptance.puppetlabs.lan'

This allows us multiple mechanisms to override the forge host, with a fall back
to the static 'forge-acceptance.puppetlabs.lan' host.

It also provides wrapper methodology for stubbing a host in general
`stub_hosts_on` and provides a forge specific wrapper `stub_forge_on`
so we can make our acceptance code more DRY.

To facilitate proper 'unstubbing' this patch also introduces the capability to
declare a teardown code block, that will always be called at the end of a test
case. This is a generic method, and can now be used by anyone for purposes
beyond the initial goal of this patch.
Merge pull request #260 from kbarber/ticket/master/15699-forge_role

(#15699) Add methods for resolving and more adequately stubbing the forge host
Add an option to preserve test instances.

Current test machines are snapshot based and don't require any sort
of deletion or preservation. This support is needed to allow debugging
and instance re-use for cloud-based acceptance testing
Merge pull request #256 from branan/scp_modules

Add support for installing a module via scp from the test controller
Add blimpy support for creating AWS instances for acceptance

This adds a new cleanup step. Cleanup is run if *any* step fails.
This ensure that ec2 instances are cleaned up even if another
setup, pre, or post step fails.
Merge pull request #262 from branan/blimpy_vmrun

Blimpy vmrun
Remove obsolete virsh support from vmrun
Merge pull request #263 from branan/remove_virsh_vmrun

Remove obsolete virsh support from vmrun
Add an option to apply_manifest_on that allows raising of test failures when manifests fail to apply.
Merge pull request #264 from praxxis/feature/apply_manifest_on_catch_failures

Add an option to apply_manifest_on that allows raising of test failures when manifests fail to apply
(maint) Improve ec2 support

Move ec2 configs to external file:
  config/image_templates/ec2.yaml

Populate ec2.yaml with 'production' PE AMIs.
Merge pull request #265 from djm68/extend_ec2_amis

(maint) Improve ec2 support
(Maint) @host is actually a string

There must have been a change at some point from @host being an instance
of Host to being just the name of the host. This removes a few calls to
@host methods that assume that it is a Host object.
(Maint) Better express value of variable in its name

The @host variable didn't contain a Host instance, it actually contained
the name of the host and so is renamed to @hostname.
(maint) Significant re-write of README

README was stale and hard to follow.  Added new provisioning info
and reorganized for easier flow.
Merge pull request #266 from zaphod42/maint/master/host-in-ssh-is-a-string

Fix using :pty in tests
Merge pull request #268 from djm68/readme_updates

(maint) Significant re-write of README
normalize line endings to unix newline and saw raw versions of stdout,stderr,output
Merge pull request #270 from justinstoller/feature/master/14158-line-endings

[14158] normalize line endings to unix newline