TODO: - Get all run-pass and run-fail tests passing resolve - Requires getting libtest to compile - Audit TODOs in codebase - MIR Optimisations - HIR Optimisation (remove dead code in `if true/if false` branches) - Convert enum variants to point to structs for the data type - Clean up Span code to correctly handle nested spans - Clean up AST - Explit arg patterns and arg types up for cleaner serialisation