Allow user defined steps

Currently there are script based steps in the background. They do
various actions from pre-provision to post-provision. This commit gives
users the ability to set vm specific actions for each step in the process
(:pre, :provision, :post). The user provided steps override the default
role based steps. In the event a custom action is not provided for specific
step, the role relevant default is used. If a custom action is provided,
but the path is wrong or it otherwise cannot be found, we do not fall back
to the default. The user provided action is assumed to be a script. The
action can be templatized and will be run through ERB before being run
on the vm.

Batteries stay included!
There are a set of script based :base steps. These steps remain active
and are not user overridable. These steps do things such as call the PE
installer.