(PUP-3676) Move OpenSSL::X509::Name calls in util/ssl.rb

This commit moves the initialization of a couple of constants in
`Puppet::Util::SSL` down into the body of the `subject_from_dn` method.

The purpose of the change is to avoid having this initialization, which
involves creating `OpenSSL::X509::Name` objects, be done when Puppet is
running under Puppet Server.  We've been trying to avoid calls into
JRuby OpenSSL as doing so has caused many problems for Puppet Server.

The `subject_for_dn` method is the only code which referenced these
constants and `subject_for_dn` is only called by the Rack HTTP handler,
which is not used by Puppet Server.
(maint) Remove unused scope from closure call_by_name

The big removal of 3x parser/ast missed to remove the unused scope
that was present in Closure#call_by_name.

This commit removes the unused scope, and corrects a typo in code that
supports use cases not yet merged to master (if invoked would cause a
hard stop on undefined variable 'scope').
(PUP-1802) Update SHA to puppet_for_the_win

Updates SHA to puppet_for_the_win to incorporate fix to start service
directly with ruby.exe instead of using a wrapper. This avoids warnings
in the service control manager; see PUP-1802 for details.
Merge pull request #3330 from MikaelSmith/bug/master/PUP-1802-update-p4tw

(PUP-1802) Update SHA to puppet_for_the_win
(PUP-3274) Remove acceptance setup step to set parser

The old parser/evaluator have been removed, and there is no longer a
:parser setting and switch. The acceptance setup step which allowed the
setting of 'parser' in puppet.conf prior to a run is therefore obselete
and now being removed.
(PUP-3140) Include faulty number in Illegal Number Parser Error

Before this commit whenever an invalid number was found in a manifest
the lexer would raise an "Invalid Number" error without any context as
to what number was invalid. This commit changes the behavior to show
what number was an issue.
Merge pull request #3332 from demophoon/improve/master/pup-3140-error-illegal-number

(PUP-3140) Include faulty number in Illegal Number Parser Error
(maint) Do not add delivery domain to generated hosts

...unless it is missing. Earlier versions of Beaker, I believe, provided
a host name that was not an fqdn, and when our Rakefile was creating a
config to allow Beaker to be re-run against preserved hosts, it would
add the delivery domain. Now, hostnames are being found fully qualified
in the logs, and we need to only add the domain if the hostname is not
qualified.

This commit also refactors the code that releases vms to make use of the
internal vmpooler rather than relying on Beaker::VcloudPooled, whose
interface may change.
Merge pull request #3333 from jpartlow/issue/master/pup-3274-remove-set-parser-acceptance-step

(PUP-3274) Issue/master/pup 3274 remove set parser acceptance step
(PUP-2927) Enable Facter debugging with debug option.

Enabling Facter debugging when the debug option is given to Puppet.
(PUP-2927) Enable Facter stack traces with trace option.

Enabling Facter stack traces when the trace option is given to Puppet.
(PUP-2927) Route Facter logging through Puppet's log.

If using a recent version of Facter that supports Facter.on_message,
Puppet will now route Facter's logging through Puppet's log with a
source of "Facter".

This supresses Facter debug/warning message output in favor of letting
Puppet handle the messages.  This also results in Facter's logging
ending up in the report.
(maint) Replace Facter[].value calls with just Facter.value.

There are a few remaining Facter[:name].value calls remaining.
We use the shortcut method Facter.value throughout Puppet's source, so
removing these calls in favor of the simplier Facter.value call.
Merge pull request #3331 from peterhuene/pup/2927

(PUP-2927) Improve Facter logging integration.
(maint) use opencsw for ruby19 temporarily on solaris11

This change installs ruby19 on solaris11 from opencsw.
Without this change acceptance cannot run.
Once the vmpooler templates are update to solaris11.2
this should be replaced with a more "native" ruby19 installation.
Merge pull request #3340 from er0ck/maint/master/temporary_ruby19_install_method_for_sol11

(maint) use opencsw for ruby19 temporarily on solaris11
(PUP-3676) Memoized dn_parser and no_name in Puppet::Util::SSL

This commit promotes `dn_parsers` and `no_name` back to being
class-level and ensures that they are only initialized once rather than
being reinitialized on each call to `subject_from_dn`.

This commit also removes the fallback `lambda` no_name parser from
`subject_from_dn` and instead just ensures that `no_name` is returned
whether the dn is "not possibly valid" or if none of the
`OpenSSL::X509::Name` parsers is able to parse the dn successfully.
(maint) Improve comment about "scope state" and closure
Merge pull request #3316 from camlow325/maint/master/PUP-3676-move-openssl-calls-in-ssl-rb

(PUP-3676) Move OpenSSL::X509::Name calls in util/ssl.rb
(maint) Add validation tests for top-level constructs in conditionals

In PUP-3274 some tests ended up "missing" (or at least hard to see
where certain behavior was asserted). This brings back three such
tests for testing that top-level constructs class, define and node
can not be defined inside of a conditional expression.

The tests are added to the validator_spec since it is responsible for
flagging these as errors.