(DOCUMENT-22) Clarify matching of crontab entries

This updates the documentation to be consistent with behavior introduced in
commit da9162c.
(PUP-1220) apply proper scoping rules to scope#to_hash

The fix for #1427 added an instance method to the scope class
for exporting all variables from the local scope. This method
apparently re-implemented the dynamic scoping rules.

When those were removed, the #to_hash method was left as was.
As a result, dynamic scoping still worked from within templates,
when using the @variable syntax in the erb code.

Fix this by using the new #enclosing_scope method so that proper
scoping rules are used instead.
(PUP-1220) make the dynamic scoping fix for #22800 flexible

As suggested by Henrik Lindberg, make the parser only behave correctly
when parser=future is configured. If working manifests rely on the
regression, the next point release won't break them. Instead, users can
test for this using the configuration setting.

The next major release should adopt the fix as standard behavior and
the legacy support should be removed. Since the variable lookups in
templates relies on the accessing of local attributes, there is no
way to issue deprecation warnings to users.
(PUP-1220) optimize template scoping fix

Following enhancements as suggested by Erik Dalen, Andy Parker et al.
* prefer Puppet[:parser] over Puppet['parser']
* cache the config value of Puppet[:parser]
* pick the future vs. legacy branch only once per template
(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-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-1765) Directory env respects cmdline modulepath and manifest

The addition of directory environments in PUP-1118 caused a regression
in the behavior of --modulepath and --manifest set from the commandline.

Three cases are seen:

1) given a '$confdir/environments/production' directory,
`puppet apply -e 'include "modclass"' --modulepath /some/other/modpath`
fails to find the modclass from /some/other/modpath.  The same problem
is seen if a specific directory environment such as '--environment
direnv' is set (assuming that direnv exists).

2) given a '$confdir/environments/production' directory,
`puppet module install foo --modulepath /some/other/modpath`
installs to '$confdir/environments/production'.  If a specific directory
environments such as '--environment direnv' is set, then it incorrectly
installs to "$confdir/environments/direnv'.

3) given a '$confdir/environments/production' directory,
`puppet master --manifest /some/other.pp`
does not execute '/some/other.pp' when an agent calls in without
specifying an environment.

To fix these cases we are now explicitly overriding the configured
environment with the stored :cli modulepath and/or manifest setting,
both at application run time and when handling a v1 http api call.
Merge pull request #2407 from jpartlow/issue/master/pup-1765-puppet-apply-ignores-cmdline-modulepath

(PUP-1765) Directory env respects cmdline modulepath and manifest
(PUP-1765) Change assert_not_match to assert_no_match

I believe this is a minitest vrs test/unit ruby version issue.
'assert_no_match' is the variant available on all platforms that we use
throughout the suite.
Merge pull request #2117 from ffrank/ticket/master/22800-dynamic-lookup-in-templates

(PUP-1220) apply proper scoping rules to scope#to_hash
Merge pull request #2411 from jpartlow/feature/master/pup-1372-enhance-defined-function

Feature/master/pup 1372 enhance defined function
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.
(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.