Working towards a generic mechanism for handing builds off to puppet

Moving toward a generic approach to a puppet-managed build.

This also drives a cleaner separation between design pattern (via CloudFormation) and configuration management (via Puppet). Ideally I want to refactor so that a "deployment" is different from a "design pattern" which is different from a "app configuration". A deployment chooses a design pattern to apply a configuration to.