Start of yet another rewrite.
This new rewrite will involve yet another stage of IR to make the transitions easier.
HLIR will represent blocks/statements/expressions transformed into a linearized instruction form which will make MLIR easier to generate.
MLIR will represent the next transformation into a reduced-type instruction form which will make LLIR easier to generate.
LLIR will represent the final transformation into an instruction form that is one to one with LLVM IR to make the final output easier to generate.
Each IR stage will be responsible for certain transformations, most transformations should be left to the latest IR stage possible.