(PUP-3274) Make use of node parent a DevError

Using node inheritence should now not get as far as creating a 3x AST
node expression if it does it is a clear internal error.
This commit changes the deprecation warning to an error.
(PUP-3274) Cleanup remaining AST classes

This refactors code and require of files to cleanup the remaining
AST classes.
(PUP-3274) Remove context mentioning it being for future parser
(PUP-3274) Update documentation and rephrase mentions of "future parser"

This updates the language in the documentation of functions that had
conditional behavior if future parser was used.

The since meta tags are updated to 4.0.0; to learn details about in
which 3x version something was introduced in future parser requires
looking at the relevant documentation for that 3x version. (We don't
want to drag the "future parser" backage along.

Comments (and documentation) rephrased from using "future parser" as 4x
(if required), or just stating "how things are".
(PUP-3274) Remove setting parser = future from benchmarks

The setting no longer exists.
(PUP-3274) Remove (now) duplicate benchmark

This removes the future parser specific copy of the defined_types
benchmark.
(PUP-3274) Fix up after difficult rebase to latest master

There are extensive changes in the compiler_spec where the
content of compiler_spec and compiler4_spec content was merged
and cleaned up.