(PUP-2303) Fix arguments of ArgumentError

Yo dawg, I heard you like ArgumentErrors so I put an
ArgumentError in your ArgumentError.

This makes errors in fileserver config much more readable and
easier to find.
maint: relax spec test of resources

The resource_spec performs some comparisons by using the equal_attributes_of
matcher. This is mostly correct, but considers some instance variables that are
of no consequence to the resource, e.g. @rstype. As a result, internal changes
to Puppet::Resource that may lead to this attribute not being set in a resource
that is generated from YAML would break this expectation:

expected
Foo::Bar[xyzzy]{:name=>"xyzzy", :one=>"test", :two=>"other"}
to equal attributes of
Foo::Bar[xyzzy]{:name=>"xyzzy", :one=>"test", :two=>"other"}

This is not only difficult to debug, it first and foremost misses the intention
of the example, which is only concerned with RAL attributes, not "internal"
instance variables.
(PUP-1381) issue warnings to current users of cron purging

A behavioral fix is planned for the 4.0 release. The final
3.x point releases should issue early warnings to users who employ
the functionality that is about to change.
(PUP-1381) make file_setting spec test more robust

A new call to self.resource_type in Puppet::Resource#initialize can cause
the loading of type code as a side effect. This interfered with the mocking
for the test

Puppet::Settings::FileSetting when being converted to a resource
should manage existent files even if 'create_files' is not enabled

Add a stubs call to one of the uncritical expectations so that
additional calls are not considered as spurious.
(PUP-2369) Add class to the message we return.

Add the class of the values we're changing from and to in the message
that's being returned. At the very least this will give developers a
hint about the types they're comparing explaining possible weird
behaviour.
(doc) Improve description of certname setting

This commit mentions our recommendations for certname values, as well as the one
reserved certname of `ca`. It also adds some context about what the certname is
used for.
(doc) Improve description of recurse, recurselimit, and purge attributes

The file type's `recurse` attribute didn't really explain what it did, and
didn't accurately describe the difference between `true` and `remote`. This
commit clears that all up.
(doc) Exec type: Clarify that onlyif/unless use exit codes, not stdout

This commit also clarifies that they use the same provider as the main command.
(doc) List order of log levels in description of the loglevel metaparameter
(doc) List allowed log levels in description of the log_level setting
(PUP-2010) have test repos pushed to hosts during acceptance testing

This patch changes the logic of how test packages are installed on SUTs.
Currently, repo packages are pulled by the individual SUTs - this works
because we assume that the SUTs are located within the Puppet Labs
network and can access builds.puppetlabs.lan. To run acceptance tests
in the cloud the workflow needs to be changed to have the test packages
pushed to the SUTs by the jenkins master node.

Tested successfully on jenkins, also updated spec tests.

This code relies on Beaker 1.8+ DSL methods.
(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.
(doc) Update package provider descriptions for install/uninstall options support.

Updating package provider descriptions to document support for install_options and uninstall_options.
(docs) Fix wording on environment_timeout setting

Including the AS_DURATION snippet (which is a complete sentence) midway through
a sentence results in wacky wording. This commit fixes it.
(maint) Print yard error message to STDERR, not STDOUT

As this is an error/warning, the output should be put to STDERR instead
of STDOUT so it can be easily filtered.
(PUP-2311) OpenBSD uninstall broken when multiple uninstall_options given
(PUP-1069) Implement feature :upgradeable for OpenBSD package provider.
(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.
Merge pull request #2456 from anodelman/stable

(PUP-2010) have test repos pushed to hosts during acceptance testing
Changes for azn-linux

No systemd, more recent ruby, libselinux-ruby