(PUP-2858) Remove e_parser adapter support

This removes support for the hybrid future parser/old evaluator
by changing the ParserFactory to always select the future parser/
new evaluator combination. As a consequence, the EParserAdapter
is no longer needed and it is now dropped together with its tests.
(PUP-2858) Deprecate the use of Puppet[:environment] == current

This changes defaults.rb to deprecate the use of :environment = :current
The future evaluator is always picked by the Parser::Factory and
the setting has no effect. It may have effect in future versions of
Puppet (for additional experiments when Puppet 4.0 is released). For
that purpose, the settings is not completely removed.
(PUP-2858) Remove use of Puppet[:evaluator] from the code base

This removes all usage of Puppet[:evaluator] from the code base
since it is (in this version) enough to check if Puppet[:parser] is
'future' as the future evaluator is always used.
(PUP-2858) Refactor EvaluatingParser::Transitional to EvaluatingParser

This merges the behavior of the Transitional subclass of the
EvaluatingParser into the main class, as the hybrid solution is no
longer a supported alternative.

As a consequence, all references to the
Pops::Parser::EvaluatingParser::Transitional has been changed to
just Pops::Parser::EvaluatingParser.

This commit alters no behavior.
(PUP-2858) Remove the 3_1 checker and its factory

This removes the Checker_3_1 and its factory from the code base.
This hybrid checker contained less validation (less string) than
the 4.0 checker and its main purpose was to fail expressions that
could not be evaluated with the 3x AST based evaluation (such as -=).

It is also not meaningful to continue its development as the new
4_0 checker is far better. If there is a later need to check
for "backwards compatibility" to 3x, it is better to start fresh with a
new copy of the 4_0 evaluator.
(PUP-2858) Refactor binder to use ne evaluator

The binder always transformed to 3x to get executable code. This
is not needed when using the new evaluator.
(PUP-2858) Remove duplicated testing (evaluator = 'current')

There was a test (environment_spec) that ran an extra time
with the hybrid parser = future, evaluator = current which results
in the same tests running twice. (This because the future evaluator
is enforced when runing with future parser).
(PUP-2889) Remove dependency on win32-eventlog constants

Previously, we were referencing win32-eventlog constants. However, version
0.6.0 introduced a backwards incompatible change by renaming the event
type constants[1]. As result, we can't simply upgrade to the latest ffi
gem.

This commit defines the constants in puppet, and removes our dependence on
the gem. It also adds eventlog specs, in particular to ensure that
Puppet.features.eventlog? is always true on windows.

[1] https://github.com/djberg96/win32-eventlog/commit/99aeb4d854306a6db699550884f189cbd3c8928a
(PUP-2857) Add a type for default expression called Default.

Before this change, the special value produced by a default expression
was treated as a Ruby['Symbol'] (later changed to Runtime['ruby',
'Symbol']). This commit changes this to produce an instance of a
new type called Default.

The Default type is an Any, but is not assignable to anything else.

This also removes the inference of :undef to PNilType (a.k.a Undef
in the Puppet Language). The reason for this, now that :undef is
never used by the evaluator. Thus, if someone were to return :undef, or
have it in a data structure, the type calculator would falsely
inferr it as an Undef / NilType. Now, instead, it will be inferred
as a Runtime['ruby', 'Symbol'] and this makes it more clear to
a user that they leaked an :undef in error.

As a consequence several tests that used :undef needed to be changed.
(maint) Don't try to set expectations on $CHILD_STATUS

Previously, executing bundle exec rspec spec/unit/util/execution_spec.rb
would fail on windows with an rspec error:

    unexpected invocation: nil.==(/error message/)

The issue first appears in commit f41800a. I believe because before
f41800a, facter would evaluate the certname fact, executing `hostname.exe`
prior to executing the rspec example. As a result $CHILD_STATUS was never
nil when the test executed.

But starting in f41800a, $CHILD_STATUS may be nil as can be seen by the
rspec output:

    expected exactly once, invoked once: nil.==(0)

Since the object we are trying to set an expectation on is global and
sometimes doesn't exist, this commit creates a private method for stubbing
and setting expectations on the $CHILD_STATUS.exitstatus
Merge pull request #2849 from joshcooper/maint/master/mysterious-child-status

(maint) Don't try to set expectations on $CHILD_STATUS
Merge branch 'ticket/master/PUP2889-eventlog'

* ticket/master/PUP2889-eventlog:
  (PUP-2889) Remove dependency on win32-eventlog constants
Merge pull request #2818 from hlindberg/PUP-2857_add-default-type

(PUP-2857) Add a type for default expression called Default.
(PUP-2858) Remove evaluator setting

The evaluator selection is no longer possible and so the setting is not
needed. Although removing this setting could be considered to be
backwards incompatible, I don't think it should be considered such. The
issue is that puppet can no longer support the "current" value for the
evaluator and so anything we do will either behave differently (use the
future evaluator instead) or fail (remove the setting or cause it to
fail if the value is "current"). Since this is part of an experimental
feature, I think that simply removing it is a reasonable course of
action.
(maint) Remove biff setting and related code

The Biff setting is not one that we need in the 3.x series. The work
that it was for was halted and will be picked up at a later date.
Merge branch 'pr/2819'

* pr/2819:
  (maint) Remove biff setting and related code
  (PUP-2858) Remove evaluator setting
  (PUP-2858) Remove duplicated testing (evaluator = 'current')
  (PUP-2858) Refactor binder to use ne evaluator
  (PUP-2858) Remove the 3_1 checker and its factory
  (PUP-2858) Refactor EvaluatingParser::Transitional to EvaluatingParser
  (PUP-2858) Remove use of Puppet[:evaluator] from the code base
  (PUP-2858) Deprecate the use of Puppet[:environment] == current
  (PUP-2858) Remove e_parser adapter support

Conflicts:
	spec/integration/node/environment_spec.rb

Closes #2819
(maint) Add real case for autosign cert generation test

Nate Wolfe noticed what looks like a copy paste error in my original
ssl/puppet_cert_generate_and_autosign.rb test that was repeating the
cert generate with autosign false and dns_alt_names case for the
autosign true and dns_alt_names case. This commit replaces that with
tests using autosign true, which on master with ca fails, and requires
manual signing with --allow-dns-alt-names flag.