(PUP-3274) Make lookup function's support 4x compliant as standard

When future parser is in effect, the return value is nil. This commit
removes the alternative return of undef in this case. It also removes
the extra bi directional transformation support between nil and undef.
(PUP-3274) Make binder's plugin configuration standard

This removes the conditional initialization based on parser being
set to future. Now the configuration is always initialized.
(PUP-3274) Remove future parser condition for performing type check

The type's parameter type checking was only available if the
future parser was in effect. Now it is always in effect.
(PUP-3274) Remove testing of parser == current code path

This removes testing the parser == current code path and removes
Puppet[:parser] = 'future' settings from tests that no longer need this.
(PUP-3274) Switch the ParserFactory to always use the "future parser"

This removes the ability to create a classic parser from the
ParserFactory.
(PUP-3274) Change the binder activation to unconditional

The activation of the binder was conditional on either the binder
or the parser == future setting. This commit makes binder always
be activated.
(maint) Clean up dead code
(PUP-3274) Fix failing tests after rebase to latest master

The rebase brought in the new collector implementation. It has changes
that mocking tests failed.

There is still one failing tests due to a real problem (PUP-3665) that
will be fixed and included in a subsequent rebase of this commit.
The failing tests is: ./spec/unit/transaction_spec.rb:649 which gets a
type system PResourceType from 4x instead of a Puppet::Resource
instance.
(PUP-3638) Remove .pp processing from RDoc, and remove RDoc1 support

This removes all processing of .pp files in the rdoc support in puppet.
Only the processing of elements expressed in .rb files are kept
(i.e. functions, types, facts).

This also drops supports for RDoc1, since support for Ruby 1.8.7 is
also dropped.

While further cleanup, removal, and tidying of tests could be performed,
all of the Rdoc support is slated for removal when the new documentation
tool is finished and also handles the functions, types and facts. (This
includes fixtures, helpers, methods that can be (probably) be removed
and that now raises exceptions or does nothing, etc.

Remove test of RDoc parsing .pp
(PUP-3274) Remove 3x Parser, Lexer and AST not used by compiler

This commit is a major removal:
* The 3x grammar and parser have been removed
* The factory metods to create a parser now only returns the 4x
  parser.
* The 3x lexer has been removed
* All AST classes not used by the compiler and in the bridge between
  the 4x evaluator and the rest of the puppet runtime have been removed.
* The Puppet[:parser] setting is switched to 'future' by default.
  Thus all spec and integration tests now run with future parser by
  default.
* As a consequence of the removals, many tests are removed, and many
  tests that ran twice (for 3x and 4x parser/evaluator) now only
  run for 4x. (With reduce spec run time as the result!).
* One collector related test is renamed to reflect that it tests
  "collection" and not the old "Collector" class.
* With the removal of the 3x ast, there is no need to support
  transformation to it, nor dumping of it. These classes have been
  removed.
(PUP-3274) Resurrect the asthash_spec and remove dead asthash_spec

The asthash_spec was commented out, and is now deleted.
The astarray_spec was also commented out, but the AST::ASTArray
class survived the initial removal from the Parser::AST name space
since it is still used. This commit resurects the test for the ASTArray.
(PUP-3274) Remove conditional compiler behavior for future parser

This removes future parser conditional behavior for the collection
mechanism to use when checking for unresolved virtual references.
(PUP-3274) Remove setting parser future from scanf function spec

This removes before each setting of parser = future since everything is
now running under the future parser.
(PUP-3274) Make node/environment_spec run only for "future parser"

This changes the integration test node/environment_spec to only run for
the future parser, and with strict_varibles turned on.
(PUP-3274) Update the parser spec documentation (conditional on future)

This removes the text that describes the alternative behavior
for parser == future.
(PUP-3274) Remove the parser setting from defaults.rb
(PUP-3274) Remove the binder setting

The binder is now always on since that was implied by setting
parser to future.
(PUP-3274) Replace AST::Variable with 4x construct in test

This modifies the unit/resource/type_spec to use a 4x construct
via a PopsBridge instead of using the old AST::Variable.
(PUP-3274) Replace use of AST::String with AST::Leaf in tests

Tests only test that the value can be evaluated and the basic
Leaf class can be used for this instead of the AST::String class as
this allows it to be removed (it is only used in tests).
(PUP-3274) Remove unused AST::Leaf derived classes

This deletes all AST::Leaf derived classes that are now unused.