Jit IR

Initial implementation of an "IR"  (intermediate representation) for the recompiler. May allow some advanced inlining and reordering optimizations in the JIT over time.

Does not seem to affect performance much if at all, at the moment.

Tested on ARM and x86/x64. Want this in before I start working on the ARM64 JIT.
Would we eventually reorder things in IR so that delay slots aren't even something the jit is aware of?  Although, I wonder how that would impact breakpoints.

Because, if we reorder, `GetOffsetInstruction(1)` might not be accurate, right?

-[Unknown]