This replaces LLVM as the low-level optimisation layer of the FTL JIT.
They currently achieve roughly 5x faster compile time than LLVM while
achieving roughly the same generated code quality for their workloads.
I'm sharing as I thought some parts of the design may be interesting
to other LLVM devs, including the use of Check opcodes ("like a
marriage between a Branch and a Patchpoint") and the backwards greedy
pattern matching for lowering from B3 to Air.