Enable customization of Vagrant and virtual machine

Adding an additional port forward or changing the memory allocated to
the virtual machine is an often requested feature for complex roles.
These changes allow several methods for customizing the Vagrant
configuration.

* Roles can use the vagrant::settings define to change things
* User supplied settings can be stored in a .settings.yaml file

The user's .settings.yaml trump defaults and role provided values except in
the case of memory limits and cpu count. These are set to the highest
value specified across all sources.

Also introduces a new custom type that can be used to "shout" messages
to the user. This type differs from the built-in notice type in that it
can be configured to apply only when notified by another resource.

Change-Id: I689f7c129241f071ba5b9f503358811255756f6c