(DOCUMENT-22) Clarify matching of crontab entries

This updates the documentation to be consistent with behavior introduced in
commit da9162c.
(maint) Typo fixes: repeated words (e.g. "the the")
(maint) Revise help for puppet config subcommand

Mostly adding context about the idea of sections, inc. list of available sections.
(pup-1766) Remove duplicate test
(pup-1766) Add support for multiple defaultfor's

Prior to this change, it was possible to specify a defaultfor to
cover, say, multiple osfamily's e.g. with:
    defaultfor :osfamily => [:os1, :os2]
Or it was possible to specify a more complex hash, e.g. with
    defaultfor :osfamily => :os1, :operatingsystemmajorrelease => "42"

But if more specificity for just one of the operatingsystem values was
needed, defaultfor couldn't support that. This change allows for this, e.g.:
    defaultfor :osfamily => :os1  # all variants of os1
    defaultfor :osfamily => :os2, :operatingsystemmajrelease => "42"  # only release #42 of this os

To support this change Provider defaults is now an array of hashes (formerly,
it was a merge of the hashes provided by all defaultfor invocations), which requires
commensurate updates to the specificity method and the dochook.

There are also some new spec tests for representative defaultfor combinations, and
two spec tests needed to be updated with the expectation that Facter will be invoked
to assess defaultprovider specificity.
(pup-1766) Set systemd as a default provider for the service type on rhel7
(pup-1766) Add support for :feature to defaultfor

Previous to this change defaultfor had no support for a key
of :feature, however the exec/posix.rb provider assumed
there was such support.

The only reason this worked was that the specificity method
evaluated hash length independent of whether the hash matched
reality in anyway. E.g. exec/posix.rb could just as easily have
specified:
  defaultfor :foo => :nonsense
And it would have a specificity of 1 (yay).

This stops working with the changes in this pull request to
make specificity actually evaluate whether the specified hash
is match in anyway.

So, this commit adds the :feature support to defaultfor which
exec/posix.rb already assumed it had. That file was the only
use of 'defaultfor :feature' I found, but adding this support
seems like potentially useful as an enhancement.
(pup-1766) Break out at first failed match

The previous version of default_match walked through all of the
hash elements even after finding a failure. This patch uses all?
to break out at the first failed match; as an additional benefit,
the code is cleaner.
(PUP-1275) Never try to fork on Windows

In 3.0.2, in commit 4d1a2f83d9 for #17361 restored the ability for *nix
agents to apply a catalog in a forked child process. But the change
caused Windows agents to also try to fork if run without the `--onetime`
flag.

This regression means you can't run Windows agents with `--listen` and
kick them.

This commit adds a `can_fork?` method to ensure we only attempt to fork
if we both can and should fork. There is no change in behavior for *nix
agents.
(PUP-1821) Require Facter 1.7 or greater

We're starting to rely on facts that were released in Facter 1.7.0,
which means that we always need to pull in 1.7 to make those facts
available.
(PUP-1839) Re-deprecate set_value

The set_value method really is deprecated.
(PUP-1839) Introduce overridden defaults

The previous behavior of setting the value of a configuration setting
was that the value only took effect if a user had not specified a value
for that setting on the command line. This caused lots of confusion and
some unsafe situations where the puppet code tries to override a setting
in order to continue.

This changes the precedence of setting values so that anything set in
the code is higher precedence than the cli values. In order to allow
overriding the defaults that are determined by hooks on settings, this
also adds in an `override_default(setting_name, value)` method so that
the hooks can create new defaults.
Merge pull request #2304 from Sharpie/DOCUMENT-22-cron

(DOCUMENT-22) Clarify matching of crontab entries
Merge pull request #2362 from nfagerlund/docs_config_command

(maint) Revise help for puppet config (plus another minor doc commit)
Merge pull request #2398 from joshcooper/issue/master/PUP-1275-windows-kick

(PUP-1275) Never try to fork on Windows
Merge pull request #2405 from adrienthebo/issue/master/pup-1821-depend_on_facter_1.7

(PUP-1821) Require Facter 1.7 or greater
(PUP-1765) Use master ssldir setting with default environment test

Acceptance git/packages setup differ in the ssldir location.  By setting
to what has been configured on master, we can shift confdir but retain
the previous ssl certs for the final test without worrying about the
difference in ssldir location.
Merge pull request #2391 from kylog/issue/rhel7-systemd-defaultprovider

pup-1766 make systemd the defaultprovider for service on rhel7
(maint) Release hosts to the vcloud pooling api

Our configurations now uses Scott's vcloud pooling api, so rather than
attempt to destroy them directly through vsphere (the code for which was
no longer working with current rbvmomi anyway) we are submitting them to
the pooling api for deletion.
(maint) Remove unused rsync for preserved acceptance test reruns

Package re-installation and rsyncing of local code changes while
re-running acceptance tests on preserved vms is something we aren't
doing. A better solution for the cycle of acceptance testing against
local changes is to use a git install against a local git daemon (see
the docs/acceptance_tests.md) to test against changes you have checked
in locally.