(maint) Add ruby-augeas to Gemfile and Travis for more test coverage
(#23373) Support selecting the section

The --section option to the subcommand now allows a specific section of
the configuration file to be manipulated.
(#23373) Have config parsing use IniFile's sections

Since the IniFile code now tracks the sections the config parsing can
utilize it and simplify its flow some
Maint: Adjust wording and formatting of several settings, notably reports
(#23373) Provide a more structure config file parse

The previous parsing of the config file was a hierarchy of hashes, which
made it hard to discover what the parts were. This changes it to use a
more structured system and lays the groundwork for moving lookup
behavior elsewhere.
(#23403) 'autosign' setting should manage file parameters

Puppet settings of type :file can specify the owner, group, and mode of
the file specified by the setting, like so:

    [master]
    autosign = $confdir/autosign.conf { mode = 664, owner = service, group = service}

Commit bca628dc extracted the autosign setting validation to a setting
class but dropped the ability for file settings to be specified. This
commit resolves the issue by making the autosign setting inherit from
the file setting.
Maint/22374: Clarify the action/interaction of the noop setting and metaparameter
(#23403) Do File.expand_path on the expected path

The FileSetting#to_resource method will call File.expand_path, which on
Windows, will convert a relative path like /foo/bar to an absolute path based
on the current drive.

This commit changes to the test so that the autoconf setting returns an
absolute path.
Merge branch 'pr/2150' into stable

* pr/2150:
  (#23403) Do File.expand_path on the expected path
  (#23403) 'autosign' setting should manage file parameters
(#23373) Pull apart settings into a few more classes

The monolithic settings infrastructure is really hard to work with. In
order to implement the functionality for puppet config print to reliably
be able to print the value of any given section of the configuration I
need to be able to split it apart from the very static structure that
exists inside puppet. This takes a step in that direction by starting
the process of extracting the lookup logic into smaller classes.
(#23373) Add section control to the config print action

This exposes the lookup facilities that are used inside the settings
infrastructure in a manner that allows looking up values from the
perspective of individual sections. This functionality is then exposed
to the end user as the --section option on the `config print` subcommand.
(#23373) Reuse existing section headers

Previously the setting manipulation code would always create a section
header if the setting was not already present in the file. This changes
it to reuse and existing header if the section is present but the
setting is not.
(#23373) Check for minimal use of [main]

When inserting settings into [main], there isn't any need to add a
section header.
Merge pull request #2151 from nfagerlund/docs_noop_clarity

Clarify noop docs, reformat some other settings
(#23373) Don't set metadata when it isn't supported

Not all settings have metadata, this prevents the settings code from
trying to set it on ones that don't support it.
(#23373) Use puppet config set in tests

This uses puppet config set to modify the puppet.conf in a test rather
than writing the puppet.conf file in place.
(PUP-865) Add ability to parse a directory of manifests

This adds the ability to run a directory of manifests instead
of just a single file. Simply assign a directory to Puppet[:manifest]
via settings or from the command line.

The files are parsed and combined in alphabetical order as if the
files were to be concatenated into a single file.

The support is in environment, and it is only support for the 
initial import. This also means that both current and future parser
can be used (i.e. the support for this is not in the parser).

Testing is done in integration/node/environment_spec.
(PUP-865) Change name of shared test group to one not already claimed
(PUP-865) Update defaults text for :manifest to show use of directory
(maint) Remove an escaped return char that was breaking solaris options

Unnecessary return char was causing Ruby parsing of local_options.rb to
fail on solaris runs.