(maint) Fix "should_not_reassign" acceptance test for future parser

The future evaluator emits a different error message.
(maint) Fix future parser inability to parse virtual class instantiation

The future parser removed the support to name a class "class". This
led to missing that it is possible to create a virtual or exported
class using resource expression syntax e.g. @class { 'theunreal': }.

This is now fixed by adding an explicit parer rule for the @/@@ class
case.
(maint) Add Issue for reassignment of variable
(maint) Move 'jeff_append_to_array' from acceptance to integration test

The test only checked if it was possible to append to an array
in an outer scope by creating two notify resource based on the
array. This test does not have to run as part of the acceptance tests
and was moved to catalog_spec in integration.

This also makes catalog_spec run for both current and future parser.
(The future parser still has issues at this point; to be fixed in
later commits).
(maint) Make integratin/scope_spec run for both current & future parser

This changes scope_spec to run for both current and future parser.
(At this point, the future evaluator still has issues; to be
fixed in coming committs).
(maint) Fix issue with dumping a future evaluator Expression

When an expression to be evaluated by the future evaluator is
embedded in a 3x AST node, it is done so by using an instance
of AST::PopsBridge::Expression. This class had a to_s that called
dump on the wrong thing thus causing dumping of expressions to fail.
(maint) Fix dumping of ast (PopsBridge::Expression).

If an ast was dumped using the AstTreeDumper it was not possible to
see that it was a wrapped pops expression. This is mostly relevant
when debugging and manually dumping results.
(maint) Fix flawed test for future evaluator

A test expected that $a -= x would return the result of the delete.
That is wrong, the expectation is that the RHS should be returned
to allow chaining of assignments. The test should have also
evaluated $a at the end to get the assigned value.
(maint) Fix problems with scope bound? and exist? methods

The exist? method did not consider inherited and containing scopes
when checking for existence. The bound? method should have
checked if the variable is bound in the scope used for assignment,
not just the emphemeral-most scope (which may not be assignable).

Fix also guards against ephemeral stack being empty and then
switching to the root @symtable (a corner case that probably never
occurs).
(maint) Fix issues in runtime3 support for future evaluator

There were problems with the runtime support:
* conversion of nil did not take place, it is now translated to :undef
  This caused assignment to 3x parmeters to fail since it is passed
  in a hash, and nil values were not seen as bona fide values.
  
* Assignment to a variable now checks if it is a re-assignment and
  then issues a propoer failure. This did not work as expected earlier
  because the 4x evaluator does not pass file/line information when
  setting the variable in scope. (This because it is expensive to
  compute for every expression).
(maint) Fix various issues with +=, -= in future evaluator

This fixes several problems with += and -= evaluation in the
future evaluator.

* -= returned the result, not the RHS
* += returned the result if LHS did not exist
* neither operator checked for non existing LHS var in strict mode
* operating on non existing variable did not assign the RHS
(maint) Differentiate between re-assignment and reserved var assignment

When moving the illegal assignment check to the puppet3runtime support
for the future evaluator there was no difference between an
illegal re-assignment, and an attempt to assign to a reserved
variable name (currently only $trusted).
Merge pull request #2164 from hlindberg/maint-future-acceptance-test-fixes

(Maint) make future evaluator pass more acceptance tests