Content View Rework: updates to support publish and promote for puppet content

This commit contains the changes to support publishing
and promoting content views that contain puppet content.

One key change being introduced is the 'ContentViewPuppetEnvironment',
which represents the published content. When one is created,
a pulp puppet repository is created.  It was split out to be
a separate model as it cannot be associated with a product
(since the source of the content could be multiple repositories);
however, it does share the glue/pulp/repo.rb that is used by the
Repository model.
Merge pull request #3790 from bbuckingham/cv-rework-puppet

Content View Rework: updates to support publish and promote for puppet content
Composite Content Views: Publish and yum content validation