Feature/master/pup 3069 add defaultmanifest

This provides default_manifest and restrict_environment_manifest, and halts compilation if there is a conflict in manifest settings.  It needs some integration tests and should not be merged just yet, but it is otherwise ready for review.
I suggest changing this description to the following: 

    "Whether to disallow an environment-specific main manifest. When set
    to `true`, Puppet will use the manifest specified in the `default_manifest` setting
    for all environments. If an environment specifies a different main manifest in its
    `environment.conf` file, catalog requests for that environment will fail with an error. 
    
    This setting requires `default_manifest` to be set to an absolute path."