(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
Merge branch 'bugfix/stable/pup-2218-yumrepo-use-yumconf' into stable
Merge branch 'stable'
Merge pull request #2560 from adrienthebo/issue/master/pup-1060-yum-package-enablerepo

PUP-1060 respect enablerepo and disablerepo when ensuring latest on yum packages
(PUP-2014) Make gem provider match on a single gem name

Currently the gem provider will match gemname$, for example with bundler
this will return quite a long list of anything ending with bundler. When
a match returns a longer list, it will actually connect and try to pull
the latest gem again, thus increasing the WAN usage and rubygems.org
usage when not necessary.

The proposed fix adds a ^ in front of the name var to ensure it begins
with the gemname.
(packaging) Update PUPPETVERSION to 3.6.0-rc1
Merge branch 'stable'

* stable:
  (packaging) Update PUPPETVERSION to 3.6.0-rc1
Merge branch 'pull-2455'
(maint) Fix Travis failures for 2.1.0 and 1.8.7.

Working around RVM issues on Travis CI by explicitly specifying the
patch level for 1.8.7 so that REE isn't used.

Working around an install issue with 2.1.0 by specifying 2.1.1 instead
of 2.1.0.
Merge pull request #2610 from peterhuene/travis/fix

(maint) Fix Travis failures for 2.1.0 and 1.8.7.
(maint) Fix two spec tests to be robust when running in a path with parens

Both of these spec tests were including the working directory (via
the 'envdir' variable) in the regex to match against, but did so without
properly escaping the directory path. This meant that if the working
directory path included parentheses they were interpreted as regex
symbols rather than bare parentheses.

This could be fixed by wrapping the envdir in Regexp.escape, but
the path isn't really important to check for in this warning message,
so I just removed it from the regex.
Merge remote-tracking branch 'origin/stable'
maint: refactor the Tyoe#retrieve method wrt. the ensure property

Clear up the structure a bit to add readability. This will make it easier
to make the retrieval of ensure more flexible.