Refactor struct and array code
Merge branch 'master' into backend_tacms3
Use a StringBuffer to hold the code generated by Module
Split class Module into [i] Function, containing the dynamic code generation parts, and [ii] Module, now containing only all static type-related parts
Refactoring
Partially update tests -> they can be compiled again, they won't run yet, though
Update tests for milestone 3 changes, backend should not pass all test again
Merge branch 'backend_tacms3' into m3_common