(#22363) Make interpolation use string_ for all runtime types

This adds polymorph string_ methods for Array, Hash, and Regexp to
ensure that interpolation result is defined (as opposed to just using
to_s and then being surprised when regexps and types come out weird.

Tests added.
(#22363) Add test for interpolation string conversion undef / default

There was no test for evaluation result of undef or default being
interpolated.
(#22363) Add more String interpolation tests
(#22363) Remove ablity to apply operator % to floats

The result is almost always surprising when trying modulo operator
on floats. It only works in a meaningful way if the floating point
numbers are integral in the first place. Rounding errors makes results
very confusing. An error is now issued instead that % is not applicable
to floats.
(#22363) Add test that shows negaice shift reverses direction

When shifting a negative count the direction of the shift is changed.
This adds tests that shows this.
(#22363) Add test that false != ''

A falsey value is not equal to false.
(#22363) Remove support for compound assignments

Compund (deflating) assignments where not completely implemented
and it turned out to be a bad idea (i.e. indirect variable
creating where [a,b,c] = [1,2,3] produces a = 1, b = 2, c = 3,
and [a,b,c] = { x=>10, a=>1, b=>2, c =>3} produces the same).

Not much is saved in terms of typing while having poor readability.
It also adds further things that can not be statically analyzed
since variable names can be dynamically computed. This can be abused.

The construct was removed instead of completed.

This also adds assignment tests for =, += and -=
(#22363) Make Integer[from, to] work as a Range type

The idea to let Integer[x,y] create an array of all values in the
range was bad. It is far more valuable to use this to create a
subtype that limits the range of Integers to those between from, to.

The implementation of this allows the range to be specified in both
descending and ascending order (it is the same range in both cases), but
behaves differently when iterated over.

This also addes iteration of a type (added in the each function). Thus
enabling almost the same behavior as earlier e.g.
Integer[1,5].each |$x| { notice $x }, but without the step.

Each supports (as for Array) using either index, value, or just value
in the lambda.

Also in this commit is a default to_s for all types that calls
the type calculator to get a string. This because to_s is used
through out puppet (e.g. when doing notice).

Open ranges are supported by using default, a default in the first
position means -Infinity, and a default in the second position means
+Infinity.

It is not possible to iterate over a range with an open end.
(#22363) Add test for Integer type to string

Tests missing for Integer to string when there is a range
that is not +-Infinity.
(#22363) Add Integer range inference test
(#22363) Add test of instance? for integer range
(maint) Remove dead code/comment
(#22363) Fix problems in TypeParser

The TypeParser misinterpreted several types as being ResourceType
if an attempt was made to parameterize a non parameterized type.

The type Object is now also supported.

When the TypeParser was used to only interpret it failed when
there was an error - this because the type parser was not used
to parse the original string. All ast objects have a Locator when
they come from the future parser and it holds the parsed string.
Now, the string is obtained from the locator if not originally
parsed via the type parser. (This should be cleaned up later).
(#22363) Fix problem with reversal of compare <, > of types

The logic was reversed compared to Ruby. Object > Integer should be
true with the rational that the set of all objects > the set of all
integers. The evaluator impl had this wrong.
(#22363) Fix issues with type comparisons

Integer type equality was broken (always true).
Literal type missing in type parser.
Literal type not considered to be Data

Adds test.
(#22363) Add additional Integer range tests
(#22363) Add capability to match against Type

Using the match operator with a Type RHS performs a puppet
instance? test
(#22363) Make access with [] also work for class parameters
(#22363) Make test for [] on Class to get parameter really work

The test was botched, it needed to do an import_ast to get class
initialized, and then evaluate its code, not the class itself.

A test in access_ops no longer works (the semantics of [] changed) and
access_ops is not instrumented to do full code import. (The test
is now in evaluating_parser_spec instead).

The e4_parser_adapter was to eager to report a .rb file as being
not supported (it should have checked if it was in "string mode" before
failing).

PopsBridge had a typo.
(#22363) Handle failing tests due to renamed collect/map

Collect/map was renamed, but there were tests that still used
collect. One test was broken in map_spec.rb (due to fix of undef/nil
problem that was missed in rename/merge/rebase).