(PUP-1362) (PUP-1775) Use yum check-updates for latest yum packages

Early versions of the yum package provider used `yum list available` to
determine the latest version of packages that were `ensure => latest`.
However the versions of yum available around that time changed the
output formatting of yum, which meant that the parsing code would break
on a regular basis (#836).

Commit 8722e439 resolved this by using the yum python bindings to
interact with yum. This required shipping a python helper script to
provide the interface between Puppet and the python libraries. However
this opened up a host of other issues ranging from what version of
Python is symlinked to '/usr/bin/python', how the yum database is
locked, and so on (PUP-1362, #11380, #16623). In addition changes to
yumhelper.py were very hard to test or reason about since it doesn't
neatly plug into our existing tests.

This commit removes yumhelper.py and replaces the update checks by
calling `yum check-update`. The output format of this command has not
changed since CentOS 4 and works all the way up to RedHat 7 so we should
be able to rely on this for a while.
(PUP-2452) Refresh support for Package type

This is implemented behind a feature that each provider must
implement. It is intended to allow source distributions to
recompile packages on a notify or subscribe event.

It allows patterns like:

    package { "app-admin/nginx":
       ensure       => latest,
       hasreinstall => true,
       subscribe    => File['/path/to/nginx/compile/options'];
    }
(PUP-3227) Address man page ownship conflicts

Prior to this commit, upgrading from puppet=2.7.23-1~deb7u3 and
puppetmaster=2.7.23-1~deb7u3 to puppet=3.7.0.29-1puppetlabs1 and
puppetmaster=3.7.0.29-1puppetlabs1 fails. I believe this problem is due
to how Debian chose to package puppet-common, which owns
`/usr/share/man/man8/puppet-master.8.gz`.

This commit adds in a `Conflicts:` to the puppetmaster and
puppetmaster-common packages to make sure that we can successfully
upgrade from these older package versions. However, if a user has
puppetmaster and puppet older than 3.3.0 installed on a machine, and
only upgrades puppetmaster, this will uninstall the puppet package from
the system.
(maint) Remove GC bug workaround for Ruby < 1.8.7

Commit bd5dc649 added a workaround for a Ruby GC bug that was present in
1.8.5, 1.8.6, and partially fixed but still residual in 1.8.7. Since
we're dropping Ruby 1.8 support entirely we can now remove the
workarounds.
(PUP-3010) Allow Upstart jobs on Amazon Linux
(maint) Fix unit of profile output

The profile aggregation stated that the times were in milliseconds (ms),
but they are actually in seconds (s).
(PUP-3322) Add debugging to appdmg provider

I was trying to install Scratch[1] using boxen[2]. The appdmg isn’t in
the expected format, so this failed. I had to poke around a bit to
understand why that was happening. This change captures that knowledge.

[1] http://scratch.mit.edu/scratch_1.4/
[2] https://boxen.github.com/
(PUP-3281) Remove latest_info methods from yum provider

This commit removes the deprecated #latest_info and #latest_info=
methods from the yum provider.

This commit is part of the Puppet 4 code removal effort.
(maint) Include fedora as a platform to test with service packages.

Fedora had been left out, through no fault of its own, and was being
tested without starting and stopping via service scripts.
(pup-3338) Make systemd the default service provider for SLES 12

OpenSuSE >= 12 and SLES 12 use systemd as the default service management framework. This
updates puppet to use the systemd provider by default on OpenSuSE 12 and 13 and
SLES 12
Merge remote-tracking branch 'upstream/stable'

* upstream/stable:
  (maint) Include fedora as a platform to test with service packages.
Merge pull request #3116 from whopper/pup-3281/remove-latest_info-yum

(PUP-3281) Remove latest_info methods from yum provider
Merge pull request #3115 from shrug/maint/master/pup-3338

(pup-3338) Make systemd the default service provider for OpenSuSE >= 12 and SLES 12
(PUP-3339) Confine failed test off of Fedora 19

There seems to be a bug in `usermod` on Fedora 19 which is causing
this acceptance test to fail. The bug does not appear to be present
in Fedora 20. Since Fedora 19 will likely each end of life soon,
just confine the acceptance test off the platform rather than try
to find a work around in puppet.
Merge pull request #3122 from hkenney/issue/stable/pup-3339_confine_failed_test_off_of_fedora_19

(PUP-3339) Confine failed test off of Fedora 19
Merge remote-tracking branch 'upstream/stable'

* upstream/stable:
  (PUP-3339) Confine failed test off of Fedora 19
(PUP-3081) Indicate catalog benchmark is for application

The message "Finished catalog run in $x seconds" may mislead users into
believing that the operation being benchmarked includes both catalog
catalog compilation, downloading, and application. The actual operation
being timed is the catalog application. We should give more indication
of this when reporting the benchmarked time.
(PUP-3137) update doc for the user resource expiry parameter

This commit updates the documentation for the *expiry* parameter
for the 'user' resource type.

Prior to this commit, the documentation was worded incorrectly with
"does never expire" which has been updated to a more simply worded:
"If you want to ensure the user account never expires, ..."
(PUP-3355) Remove PSON document_type

This commit removes the encapsulation in the PSON serialization format.
Puppet only did this when using PSON on certain endpoints, other formats
like YAML or MsgPack never did this.

This is backwards compatible with older Puppet versions as they throw
away the info if it is there. But it is backwards incompatible for other
consumers of the PSON APIs.
(PUP-3355) Remove Puppet::Util::Pson

Remove the now unused Puppet::Util::Pson class.