[util/attempt] Initial attempt prototype
[action/runner] prototype action runner
[action/deploy] prototype deploy environment action

The existing code to deploy environments is extremely decoupled, which
means there's very little cohesion in the entire system. This also has
the additional ramification of making it very difficult for one system
to affect another even if they should be tightly bound.

This commit implements a new method of deploying environments. It uses
the R10K::Util::Attempt to isolate chain discrete actions while allowing
behaviors that should be coupled to exist together.

One of the important parts of this change is that environment and module
purging is reordered just after preloading occurs and before the nested
components sync. This allows errors occurred during preloading to
immediately terminate the given attempt, and terminating upon preload
failure prevents errant purges from wiping out valid environments.

This commit addresses issue GH-194.
[environment/base] Add path attr_reader

Commit 865a0212 started normalizing the methods on objects that had
filesystem entries. This commit spreads this to Environment objects by
defining the #path method, which returns a Pathname object that
represents the entire path to the environment.
[action/deploy] prototype environment purging
[action/cri_runner] Add adapter from Cri to Action runner
[action/cri_runner] Use adapter layer to isolate CLI specific behavior
[cli/deploy] Update deploy environments to CriRunner.wrap
[action/cri_runner] Don't set log level when no specific level is given
[action/deploy/environment] rename from action/deploy

This was always the deploy environment action but was initially
collapsed under a lower namespace. The filename now respects the class
namespacing.
[cli/deploy] Replace deploy module implementation with Action
[action] Swap order of argv and opts for consistency
[deploy/environment] Purge Puppetfile modules when deploying
[util/attempt] Document and add status recording
[action/cri_runner] Return meaningful exit codes
[action/cri_runner] Allow Cri command to be optional
[action/cri_runner] Add test coverage
[deployment] Reindent and add specs
[deployment] Allow a deployment to enumerate all source paths
[deployment] Relocate stale environment purging logic