This is a partial implementation, requires support to libadalang array to support
the version returning arrays.
Properties were handled as fields. They are now implemented as function. This required
to update various places where properties were used like predicates, and use the
filter function instead.
Filter is fixed, doesn't fail anymore in case of a non-matching prefix in a matching
call, and properly sets 'it' and reset the yield callback when matching the expression.
Regular expressions were possibly interrupting the outer iteration when matching
before generation of values - now fixed.
The usage of the word 'self' to refer to the current iteration became increasingly
confusing with the usual OOP counterpart, in particular because its value can change
in a single expression, independendly of the surrounding object. See previous check
in that uncovered its usage in the fold function.
By defaults strings are now simple strings.
They can be turned to regexp with x or raw string with r.
Indentation is now handled globally with an i prefix.