(maint) Error with file set to "" should be taked as file is not known

Now, if tests set "" as the filename, the formatting is off
(The expected "at line", does not appear, instead it becomes ":l:p"
where l is the linenumber and pos the position as if it was preceded by
a file name).
(#22363) Fix problems with undef equality & problems from added tests

Tests from the parser integration tests were added to the unit tests
for the new evaluator (they were not very good integration tests). The
old test ran for both "current" and "future" and now only run for
"current". The relevant tests were moved to the evaluator unit tests.

This showed several problems in the PopsBridge (typos) for yet
unexercised code paths. These are now fixed.

As the integration/parser/compiler_spec tests were being investigated
to run also for the new parser, problems were found with comparison
against literal undef. Tests were added for this in the evaluator unit
test and the problem corrected (undef compared as :undef == nil => false
which is not the intention. Comparsions :undef == nil, and nil == :undef
are now done correctly.

Exceptions did not show up correctly when file is empty string. This
also fixes the logic where it is checked if a file is known (nil and
empty string are now considered to be "file unknown" instead of file ""
known.
(#22363) Make queries work with future evaluator

There were several problems with the query (Collector) implementation.
The CollExpr matching logic used Ruby == and Ruby include? instead
of Puppet Operators. This meant that numeric values in string vs.
numeric form were not comparable. This is now changed by using an
alternative implementation of CollExpr evaluate when Puppet[:parser] ==
future.

The relationship operator implementation did not support handling a
Collector (the result of evaluating a CollectExpression). The 3x
compiler is responsible for late evaluation of the Collector, and a
relationship formed with a Collector was not implemented. Now the
Collector is passed verbatim as operand in a Relationship, and passed on
to the compiler.
(maint) Remove call to debugger
(maint) Remove debugger call
(#22363) Make compilation work using new evaluator

An extract_type_and_title method was added to the type calculator.
It extract method extracts type/title from catalog types. This is used
in the 3x interface as 3x cannot directly deal with types.

Class methods for the API methods are also added to make the type
calculator easier to use (no need to keep an instance around; although
doing so is slightly faster).

Tests used references like Class[Baz] where Baz is a PResourceType. This
is now supported by the AccessOperator, but it is questionable if this
should be supported.

The runtime3 support now has an initializer that is called from the
evaluator implementation. It creates a value converter that is needed to
convert the runtime objects from 4x to 3x (types, and regular
expressions) that are not supported as first class objects in the 3x
runtime.

The model label provider now also provides labels for the type model.
There are additional validation / runtime issues.

The validating parser was too fond of one particular acceptor and errors
from previous runs were accumulated.

The evaluating parser did not clear the definitions and name stack
arrays which led to accumulation of classes, definitions and nodes in
subsequent use of the same instance of evaluating parser.