[Compiler] Refactor to use stack only
This allows for a more consequent concept.
- add handling of lists for SourceElements and StatementList needed to have same pass level of integration tests as before the refactoring
- change macros to reflect new concept
- introduces a new error type InternalError this error is created if the stack was not correctly reduced, which should not happen in practice