(PUP-3274) Make 4x recursive directory import the standard.

This behavior was conditional to the future parser being used.
With 3x, only the top level directory was scanned for .pp files
to import, and when future parser was in effect, the search for
.pp files were recursive.

Now the future parser behavior is standard.
(PUP-3274) Make the defined function support 4x arguments as standard

The defined function in 3x with future parser added support for type
references. This commit makes this behavior standard in 4x.
(PUP-3274) Make lookup function be available as standard.

The lookup function was conditional on future parser being used.
It is now always available.
(PUP-3274) Make handling of strict_variable the 4x way standard.

The handling of the strict_variables option was different in 3x
and 4x where the later used a more performant throw construct.

This commit makes this behavior standard.
(PUP-3274) Make the 4x handling of relatie references standard.

When the future parser was in effect, all references to resources are
made absolute (as well as asserted to have the correct form). This
change make the 4x handling of references (for functions include,
contain, require, and hiera_include) have the 4x behavior.

As a consequence, tests that have not earlier been executed with the
setting Puppet[:parser] = 'future' have been changed to reflect the
change in behavior.
(PUP-3274) Make the 4x scope to hash be the standard

The 3x scope.to_hash produced a hash using dynamic scoping rules.
The 4x implementation does not do this.
(PUP-3274) Make the context initialization in compiler use 4x

This changes the initialization of the puppet context to always
use the 4x context initialization (making injector and 4x loaders
always be available via the context used when compiling).

This is the behavior that was in effect when parser future was used.
(PUP-3274) Make Puppet::Resource use 4x semantics as standard

This turns on checking of typed parameters and removes the unwrapping of
a single value array. This is the behavior that was used when future
parser was in effect. It is now the standard way.
(PUP-3274) Make all spec tests run parser future by default

This changes the default parser setting to 'future' thereby making
all tests that are not explicit about future/current parser to run
with the future parser.

This is one step in the direction of making the future parser the
one and only parser.

Tests that are no longer needed (only running for parser current
and covered by other spec tests for future parser have been remvoved,
and tests that fail because of syntax and semantic changes have been
updated.

The future_compiler_spec has been renamed to compiler4_spec.
(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.