Update for latest Rust
Organise a bit better
Remove all uses of `Gc` in favour of `P` in case the backend changes
Move `MacroContext` to seperate module
Move `compile` and `jit_type` generators to their own modules