(PUP-2218) Use /etc/yum.conf for yumrepo default location
(maint) refactor find_conf_value to use PhysicalFile
(maint) Update yumrepo inifile provider comments
(maint) expand yumrepo inifile inline documentation.
(PUP-1060) Don't fetch latest versions at prefetch

In the previous implementation of yum .prefetch, package providers were
loaded and then the yumhelper.py script was used to determine the latest
versions available for all installed packages. While this worked for
simple cases, trying to support multiple combinations of enablerepo and
disablerepo flags makes this grossly more complex. In addition this
information is not needed at prefetch time, and testing the behavior in
prefetch gets messy.

This commit extracts the latest version query from the prefetch method.
It moves the logic to a method that does the actual querying and lazily
loads that data to keep the same run speeds. When multiple combinations
of enablerepo and disablerepo are added this information can be loaded
in the same fashion.
(PUP-1060) update yumhelper to handle {enable,disable}repo

In order to be able to use enablerepo and disablerepo flags while
ensuring latest, we need to be able to query for packages needing update
with a specific set of repos to enable and disable.

This commit updates yumhelper.py to take two flags '-e' for a repository
to enable, and '-d' for a repository to disable. The values given to
these flags must be a comma separated list of names with no spaces
between them.

It's unsustainable in the long run to continue extending this file, and
we should look very seriously at seeing what behaviors we can remove.
It's impossible to test this as-is and as we add more complexity we risk
introducing more bugs.

Original patch by Matthew Byng-Maddick.
(PUP-1060) Respect yum enable and disable repo flags

When a package resource is ensured => latest, the specific version
available will depend on what yum repositories are enabled and disabled.
Commit a4abf13d3 added the ability to pass arbitrary options to install
and update commands which allowed users to specify the --enablerepo and
--disablerepo options, but these flags would not be respected when the
latest package version was used. This meant that the latest version
found and the version that could be installed with the --enablerepo and
--disablerepo flags might differ, causing all sorts of bad things to
happen.

This commit resolves this issue by making the version query aware of
these flags. When a package checks for the latest version available, it
passes all repositories enabled and disabled to the update query.
Whenever an update query is made for the first time with a combination
of repositories that output is stored, so that only query for a given
combination of repositories is made.

Unfortunately, this change still relies on yumhelper to do the actual
querying. In the long run it would be good to use `yum check-update`
instead of the complex helper script so that we can actually test and
verify the code responsible for querying packages.
(maint) Simplify yumhelper.py output parsing
(PUP-2302) Fix issue with Resource Defaults for qualified names

When defaults were set using future evaluator and the resource has
a qualified name, the registration of the default was not recognized
because scope requires every segment of a qualified name to be upper
cased.

This adds upper casing of every segment. An integration test checks
that the capitalization works.
(PUP-2317) Make future parser issue discontinuation error for import

This makes the use of import statements raise an error.
The implementation reinstates "import" as a statement function. (This
is done by the factory when it finds a name followed by an expression
list). 
Then, to raise the error, a function written with the function API
called 'import' raises an error.

This also introduced a way to raise errors based on the issue/acceptor
system. This new error type is called Puppet::Pops::SemanticError.

It is used to issue the discontinuation error. The error itself
refers to the deprecation URL which points to the relevant documentation
for manifest directory and import.
(Maint) Don't expand tar cf - sourcedir path

The Gnu tar implementation executes `tar cf - #{sourcedir}`, which can be a
relative path. So it is not necessary to expand it, and doing so causes the
test to fail on windows.
(PUP-2073) fix for multiple diff_args

Previously, if you specified multiple arguments in the `diff_args`
setting, they would be considered a single argument and quoted to the
diff command. Puppet would then try to execute:

    diff '-u --strip-trailing-cr' pathA pathB

But would silently fail without showing any diffs.

This commit ensures we can handle multiple diff args.
Merge branch 'pr/2477'

* pr/2477:
  (PUP-2073) fix for multiple diff_args

Closes GH-2477
(maint) Update PMT to work around cross-platform issues in Dir.[]

The (unspecified) default behavior of the Dir.[] method, which will implicitly coerce non-String arguments into Strings.  The win32-dir gem
overrides this method and calls String specific methods on the arguments
before any conversions are done.  This change makes our use of the
method in question more explicit, passing Strings instead of Pathname
objects to avoid the interpreter's ire.
(maint) Adding the Usertrust Network CA certificate.

Recent changes have updated the acceptance testing Forge host, which
uses an unknown (to Windows) CA.  This change adds the missing
certificate so that the acceptance tests will pass under Windows.
(maint) Remove FS redefined constant warnings in spec runs

We define FS as an alias for Puppet::FileSystem in three separate
specs. Unfortunately, describe blocks do not provide any namespacing in
rspec, and this were colliding, issuing two separate warnings for a
redefined constant.  Wrapping each spec in its own module provides
separation and elliminates the warnings.
Merge branch 'pr/2584'

* pr/2584:
  (maint) Adding the Usertrust Network CA certificate.

Closes GH-2584
(maint) Adding the Usertrust Network CA certificate.

Recent changes have updated the acceptance testing Forge host, which
uses an unknown (to Windows) CA.  This change adds the missing
certificate so that the acceptance tests will pass under Windows.
Merge pull request #2585 from pvande/maint/master/work_around_platform_inconsistencies_in_Dir

(maint) Update PMT to work around cross-platform issues in Dir.[]
Merge remote-tracking branch 'upstream/stable'

* upstream/stable:
  (maint) Adding the Usertrust Network CA certificate.