Update acceptance tests to use confine instead of skip_test loops

Now that the test harness supports confine :except, :platform = 'windows'
(and the like), update the tests to use that syntax.
Revert changes to symbolic_modes.rb -- this test should indeed be pending
(it should eventually work on Windows).
Remove EL-related test changes from this commit.

These changes will go to the 2.6.x branch instead.
(Maint) Color console output when the win32console gem is installed

Originally, we were using a feature to detect whether the platform
supports ANSI color escape sequences. The feature used to invoke
`Puppet.features.rubygems?`, which had the side-effect of loading
rubygems, if it hadn't already been loaded.

However, the ansicolor feature could cause infinite recursive loops when
trying to log that it failed to load the ansicolor feature. So the code
for loading the win32console gem was moved into Puppet::Util::Colors in
commit 91a4a7d.

However, in doing so, rubygems was not being loaded when attempting to
`require 'win32console'`, causing Windows to always raise a LoadError,
even when the win32console gem was installed.

This commit adds an explicit call to require rubygems and now correctly
colors console output when the win32console gem is installed.
Merge pull request #776 from joshcooper/maint/2.7.x/fix-broken-console-color

(Maint) Color console output when the win32console gem is installed
Use internal domain name for module tool tests

Some tests were intermittently failing when we used the hostname
"forge-dev.puppetlabs.com" rather than "forge-dev.puppetlabs.lan",
because it was resolving to the external IP address and somehow
that was being blocked by the firewall under certain circumstances.

This changes them to all use the internal name / IP.
Merge pull request #784 from cprice-puppet/cleanup/2.7.x/module-dns-acceptance-failures

Use internal domain name for module tool tests
Update CHANGELOG lib/puppet.rb puppet.spec for 2.7.15rc1
Removed topscope being overridden by node

This seems to have been an unsuccessful attempt at merging top and node
scope.
Evaluate node classes either in top or node scope

Classes that are tied to a node should be preferred to be evaluated in
the node scope, but if we don't have one then they should be in the top
scope
(#8174) Allow defines to reference topscope

Because the compiler re-assigned the topscope, looking up topscope vars
or facts from a defined resource type was causing deprecation warnings
when it should not be. By cherry-picking commits
b02aa930a03a282588e81f65e14f47a138a4b9f0 and
c995be16bc9e3ad8dbad9d21b49df76de5b72ea9 the topscope is no longer
re-assigned and so defined resource types can now lookup these kinds of
variables without problem.
Apply commit from master that varies ports during tests

This is basically a cherry-pick of

ceee8a185250bb6b5f52e56c7ed9457408b6cb0a

from master, which should provide enough variance in
the ports used for webrick/mongrel spec tests to
reduce or eliminate the transient "address already
in use" failures
Merge pull request #792 from cprice-puppet/cleanup/2.7.x/vary-webrick-port

Apply commit from master that varies ports during tests
Merge pull request #795 from zaphod42/bug/2.7.x/8174-incorrect-warning-about-deprecated-scoping

Bug/2.7.x/8174 incorrect warning about deprecated scoping
Merge remote-tracking branch 'origin/2.7rc' into 2.7.x
Update CHANGELOG puppet.spec for 2.7.15rc2
Merge branch '2.7rc' into 2.7.x
(#14615) Exclude helperscripts in gentoo service provider

The directory `/etc/init.d` does not only store normal initscripts but
also a few helper scripts (like `functions.sh`). The former behaviour was
to treat them as regular initscripts which can lead to dangerous results
especially when running `puppet resource service`. This command will
issue `/etc/init.d/<script> status` on every script inside
`/etc/init.d`. Because the helperscripts don't care about arguments,
this will cause the system to reboot when `/etc/init.d/reboot.sh status` is
executed.

Exclude helperscripts when searching inside `/etc/init.d`.
Merge pull request #736 from mkincaid/27confines

Update acceptance tests to use confine instead of skip_test loops
(Maint) Added test for fully qualified variables

A fully qualified variable looks up through the scopes of the scope that
the variable references.