(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-876) Add 'any' confine
(PUP-876) Enable upstart service provider on Redhat

This commit allows the upstart service provider to function on Redhat
systems. Redhat 6 included support for upstart and while it wasn't
widely embraced it is available for use.

The 'serial' and 'tty' services on Redhat 6 systems have instances which
the service type/provider cannot handle, so we have to ignore them for
the upstart provider to work out of the box.
(pup-1825) Allow use of facter 2.x

Before this commit, Puppet uses pessimistic versioning
(the ~> syntax) to specify that it could work with any Facter
version in the 1.x series greater than some minimum, but
was pessimistic about (i.e. didn't assume it supported) a 2.x
Facter.

In fact, the facter API to puppet has not changed in facter 2.x
so puppet can in fact work with a suitable 1.x or any 2.x. This
change replaces use of the pessimistic operator with explicit
version ranges, effectively extending the range previously provided
by the pessmistic operator to include the 2.x series.
(maint) Broaden managehome acceptance test on windows 2003

The previous regex only captured older facter operatingsystemrelease
values.  Now we're also sensistive to facter-2 operatingsystemrelease
output.
Merge pull request #2402 from kylog/issue/pup-1825/allow-use-of-facter-2

(pup-1825) Allow use of facter 2.x
Merge pull request #2402 from kylog/issue/pup-1825/allow-use-of-facter-2

(pup-1825) Allow use of facter 2.x
Merge branch 'stable'
Merge pull request #2392 from adrienthebo/issue/master/pup-876-redhat_6_upstart

Issue/master/pup 876 redhat 6 upstart
(PUP-876) Skip resource service check on EL 6

Redmine issues (#4123) and (#4124) added acceptance tests on RHEL
systems to ensure that the services listed by chkconfig matched the list
of services returned by `puppet resource service`, but this assumed that
chkconfig would be authoritative for all running services. Commit
7bdcbea enabled the upstart service provider on EL 6 systems which
breaks this assumption and causes the acceptance tests to fail. This
commit disables these tests on EL 6 since the test is no longer
meaningful.
(maint) Fix useradd spec when using ruby-shadow 2.3.3.

The ruby-shadow gem inserted a new member into the PasswdEntry struct in 2.3.3.
This caused a useradd provider spec to fail that was relying on a member that came after the newly inserted member.
The failure only occurs when the ruby-shadow gem is installed.

The fix is to populate the struct members by name rather than relying on the member order.
(maint) Change Travis CI to output documentation format for specs.

We've been observing a sporadic "rake aborted" failure on Travis CI.
This change turns on "documentation" format for rspec so that we can
at least see if the test run is aborting on the same test each time.
Merge pull request #2406 from peterhuene/travis/documentation

(maint) Change Travis CI to output documentation format for specs.
(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.