Add the s3_enabled property to the yumrepo type

This allows you to access S3 repos using the yum-s3-iam plugin
(#21470) Change validation of "storeconfigs" to reflect runtime state.

The problem was that the validator is written with static validation
in mind - not considering if storeconfigs are on or not.
Since we are currently only using the validator to validate for the
current runtime, this commit changes the behavior to consider the
runtime storeconfigs state and marking the related issues as :ignored if
storeconfigs is on.

A user that wants to use Puppet as a library will need to configure the
validation / issue options accordingly (the manifests will be validated
as per the settings of the puppet runtime used to run the validation).

This is easily done by using a different severity producer.
(maint) Remove unused exception class
(maint) re-indent file
(#21307) Refactor WatchedFile class

The watchedfile class was extracted from another location but had some
remnants of old behavior. In addition it would treat missing files as
always changed, which could lead to undesired behavior around trying to
reload missing files.

This commit refactors the WatchedFile to use a single timestamp value
and assume that the file is unchanged if the file timeout period has not
elapsed.

In addition this commit also treats file absence as a valid state.  If a
file is missing between two checks it will be treated as unchanged.
properly handle max version on ppc debian
(#21801) Normalize headers that come through Rack

Previously, although we stripped the leading `HTTP_` from
HTTP headers which Rack turned into environment variables,
we did not restore hyphens from underscores.

The user-visible consequence of this was that the match
to detect whether profiling was request from an agent would
not work when running under Passenger, but did work under
Webrick.

This commit updates the translation routine to turn underscores
back into hyphens. It also fixes an erroneous test fixture; the
sample header 'HTTP_X-Custom-Header' would never been seen in
the wild because environment variables are not allowed to have
hyphens.
Refactor to remove 'LogPath' module

In preparation for #21805, I stumbled across some coded that
seemed unnecessarily complex.  Since my changes for #21805
will end up interacting with some of this code, I decided
it was worth a quick refactor.  This commit removes the
`Puppet::Util::LogPaths` module and simplifies all of the
code that was interacting with it.
(#21805) Add containment path to report resource_status

This commit adds a new attribute the `Puppet::Resource::Status`
class, called `containment_path`.  The value is an array of
strings that indicates the types and classes that the resource
is contained within.  (The format is the same as what we show
in the log messages during an agent run.)

This data will be used by PuppetDB to allow queries by class,
which will return resources that are contained within the
specified class.
Improve documentation for pathbuilder methods
(#6112) Memory indirector for cert generate specs

This second test case is an attempt to begin re-writing the
CertificateAuthority specs in a style which does not rely so heavily on
mocking the internals of methods, particularly for initialization.

Many of the specs in the proceeding test case end up looking like inverse
descriptions of the methods under test (expect this call, then that call,
then this other call), because there are so many side effects to
CertificateAuthority methods and dependencies on other SSL components which
are themselves indirected.  It is unclear whether we are really
testing the code.

Based on Patrick Carlisle's suggestion of using memory indirectors for the
various SSL endpoints, this new test case worries less about unhooking
CertificateAuthority from all its dependencies, and more about testing the
results of methods.  CertificateAuthority initialization still requires some
mocking but I've tried to isolate it more from the tests.

If we like this approach, we should begin moving tests from the first test
case into this one.

It would probably also be good to create an integration test for the SSL
library that more rigorously tests the interaction between SSL components
through CertificateAuthority.
Merge pull request #1779 from cprice404/feature/master/21805-add-class-containment-path-to-resource-status

- Refactor to remove 'LogPath' module
- (#21805) Add containment path to report resource_status
- Improve documentation for pathbuilder methods
(#21307) Pull apart many parts of logic for WatchedFile

The WatchedFile class had several intertwined pieces of logic: when to
update, what a changed file is, when a changed isn't yet known. This
unravels it into individual parts. Overall the code got larger, but the
pieces are more specialized now and have a name that calls out what is
being done.
Remove support code for ruby < 1.8.7

We stopped supporting running puppet under ruby 1.8.5 in 3.0 (ticket #15734).
Merge pull request #1774 from jpartlow/issue/master/6112-generate-specs

Issue/master/6112 generate specs
Merge remote-tracking branch 'zaphod42/issue/master/21307-missing-files-treated-as-changed'

* zaphod42/issue/master/21307-missing-files-treated-as-changed:
  (#21307) Pull apart many parts of logic for WatchedFile
  (#21307) Refactor WatchedFile class
  (maint) re-indent file
  (maint) Remove unused exception class
Merge pull request #1738 from hlindberg/issue/issue-21470

(#21470) Change validation of "storeconfigs" to reflect runtime state.
Merge pull request #1785 from pcarlisle/remove-deprecated-ruby-support

Remove support code for ruby < 1.8.7
(#18295) add title to start call in windows exe package provider

When called without a title parameter, the windows 'start' function
collects any additional command line switches to itself rather than
passing them along to the command to be started.

The existing exe_package.rb, in it's initial and only commit
07931e63c7d76fcec331946921b304438c38b469, had the "Title" parameter set
for uninstalls. It did not have the "Title" parameter set for installs.
Since uninstalls almost always require parameters, but install do not,
I assume this was an unintentional omission.

This resolves the issue by adding a title bar description with the
string 'puppet-install' to windows executed for installing .exe
packages.
Merge branch 'pull-1732'

This closes GH-1732.