(#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.