<= chosen arbitrarily from comparison operators, but any of <=, >=, <, >
have the same precedence.
This now allows expressions containing any of *, /, %, +, -, << and >>
to be used on the LHS.
No tests broke, and the corresponding originally failing test in
[tricky] was expanded and added to the main suite.
- moved as much logic out of the macros as possible
- moved most logic into new ResultBuilder class, which wraps ExpressionResultBuilder (may take it over next), subsumes ResultAction and also takes place of ExpressionDecomposer.
This introduces many SRP violations - but all in the name of minimising macro logic!