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.
Template can now both handle variable creation and command sequence.
They become essentially a command that can be instantiated.
Concept of command variable is being expanded to fit templates needs.
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 ()
do ... then ... then ... end allows to chain commands in order.
Also rovided ways to capture a template created during a wrap operation.
Also improved error output (now only outputs the file name(