(doc) Document key purging in the description of the ssh_authorized_key type

This commit puts an explanation of key purging over where people will likely be
looking for it. It also tightens up the description of the user type's
purge_ssh_keys attribute, and adds an example key to the ssh_authorized_key type
(since the way that type breaks up key lines is somewhat unintuitive).

The example public key is a dud, to prevent accidental access grants.
(PUP-2311) OpenBSD uninstall broken when multiple uninstall_options given
(PUP-2458) Tests for providers inheriting from providers of another type

It's sometimes desirable to create new providers that inherit from providers
of a different type to create more specialised types/providers from a common
base.  This adds tests around this already-present functionality.
(PUP-2508) Ensure env & trn-uuid are sent when configurer failures occur

Any failure in the configurer #run code might cause the ensure block to
evaluate early, and a report might be sent missing the details of what
the environment and transaction_uuid should be.

This patch moves where the report fields 'environment' and
'transaction_uuid' are set in the configurer code to ensure they are
populated early.

It also ensures the report environment is modified if the catalog or
server specifies it is different to the launched environment. This is
because we change this mid-flight, so our code simplies updates the
report environment when this happens.

Signed-off-by: Ken Barber <ken@bob.sh>
(PUP-2182) Add virtual_packages feature to package type.

In 3.5.x, the yum package provider changed to accept virtual package
names (packages that provide other package names).

That change in behavior caused some undesirable side-effects. As we did
not give users fair warning that this behavior was changing, we have
decided to change the yum provider back to only accepting "real" package
names by default.

To keep the support for virtual package names, a "virtual_packages"
feature has been implemented on the package type and supported on the
yum package provider.  The feature adds the "allow_virtual" parameter
that controls whether or not virtual package names will be allowed for
install/uninstall.

For now, the default value for this parameter will be false to restore
the previous behavior.  However, a deprecation warning will be issued to
let users know that the default will eventually be changed to true.
Users can prevent the deprecation warning by explicitly setting the
parameter to either true or false.
(PUP-2561) Revert to using UNIX pipes in PMT’s tar operations.

Prior to this change, we’d attempted to handle shell escaping of
arguments by passing arrays of arguments rather than a single full
command string.  While this worked as intended, it meant that we needed
to stream data between processes through Ruby.  As it happens, larger
tarballs would cause the write pipeline to become backed up, and since
we would attempt to write all the data before reading any, we would
effectively deadlock.

Rather than attempting to stream by chunks, we’ve reverted back to using
the full string commands, and managing shell escapes (where needed) in
Ruby.
(PUP-2562) Remove uses of unsupported range syntax in PMT.

Prior to this commit, if any module contained a dependency statement
without a version requirement, it was erroneously treated as if no
version would satisfy (rather than allowing any version to satisfy).
This was a regression, and this change abstracts the places where we
made those checks, and corrects the error.  In addition, there is new
debugging output that will help identify similar cases in the future.
(PUP-2562) Remove uses of unsupported range syntax from Semantic.

This change pulls in an update to Semantic that was made in commit
6d17d5283e0868cfc3d74d1e9d37b572e1739b6e.
(PUP-2561) Remove the now obsolete ‘mode’ argument to ::execpipe.

Earlier, we’d added a ‘mode’ parameter to the P::U::Execution.execpipe
to support writing to the subprocess’ STDIN.  This commit removes that
functionality since we do not depend on it, we’ve never published it in
a supported release, and we do not wish to provide ongoing support for
it.
Merge pull request #2645 from pvande/bug/stable/pup2561_pmt_deadlocks_on_large_tarballs

(PUP-2561) Revert to using UNIX pipes in PMT’s tar operations.
Merge pull request #2644 from pvande/bug/stable/pup_2562_pmt_incorrectly_rejects_openstack_4_0_0

(PUP-2562) Remove uses of unsupported range syntax in PMT.
Merge branch 'stable'
(PUP-2561) Fix spec test on windows
Merge branch 'pr/2650' into stable

* pr/2650:
  (PUP-2561) Fix spec test on windows
Merge remote-tracking branch 'upstream/stable'

* upstream/stable:
  (PUP-2561) Fix spec test on windows
Merge pull request #2563 from jasperla/openbsd/uninstall

(PUP-2311) OpenBSD uninstall broken when multiple uninstall_options give
Merge pull request #2606 from nfagerlund/docs_ssh_key_purge

(doc) Document key purging in the description of the ssh_authorized_key ...
Merge pull request #2615 from domcleal/tickets/master/pup-2458-inherit-providers

(PUP-2458) Tests for providers inheriting from providers of another type
(PUP-1027) Add warnings for bare words that will be keywords in 4.0

This adds a check for reserved words and makes the words:
private, function, type, and attr reserved.

These warnings are for the --parser current setting in 3x.
(PUP-1027) Change warning for reserved words to a deprecation warning