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.
nested blocks {} and sequences "do .. then .. end" are now merged.
The new sequence "do .. then .. end" has a unique frame.
Implemented support for group number through nesting of sequences.
New tree syntax uses {} instead of [] now that this is available
Removed confusing implicit "new", template now needs to be captured to be available.
Renamed the "template" browsing function to "wrapper".
Change odd syntax is' / has' to is () and has ()