(PUP-1596) Add config_version as an explicit env property

Legacy environments could have config_version set in their puppet.conf
stanza, just as any setting in an [env] stanza would shadow if that
setting was looked up in the context of the environment.  But the new
directory environments are intended to explicitly include config_version
as a setting (albeit an optional one).

This change adds a config_version attribute to
Puppet::Node::Environment, looking it up from settings if a new call is
made, or taking it directly from a create call, which is what the Directory
environments loader will do once environment.conf is parsed for
directory environments.
(PUP-1596) Read environment.conf for new directory environmets

Prior to this commit, the new directory environments would always have a
set manifest and modules directory relative to their environment
directory.  This is too restrictive compared with the arbitrary
modulepath and manifest settings available to legacy puppet.conf
environments, so we are adding a per directory environment.conf which
allows arbitrary settings for manifest, modulepath and config_version
per directory environment.

The path to the environment.conf is unique per directory environment and
is not configurable.  For a given $environment found through the
$environmentpath, it is always
"<path-in-environmentpath>/$environment/environment.conf"

No sections are allowed in this file, and the only three settings
allowed are manifest, modulepath and config_version.  Adding a section
or other setting will log an error and cause the environment to be
ignored.  A relative path is always taken to be relative to the
environment directory itself.