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:

    "The default main manifest for directory environments. Any environment that
    doesn't set the `manifest` setting in its `environment.conf` file will use
    this manifest.
    
    This setting's value can be an absolute or relative path. An absolute path
    will make all environments default to the same main manifest; a relative
    path will allow each environment to use its own manifest, and Puppet will
    resolve the path relative to each environment's main directory.
    
    In either case, the path can point to a single file or to a directory of
    manifests to be evaluated in alphabetical order."