Optimisations, final wave

I have some more optimisations that increase FPS by 2 or 3 in Shantae. Some of them can also be used by asmcore.

Summary:
* GB registers A and F are in local variables.
* Anything that has to do with register A is split from the opcode&7 stuff.
* The hblank handler avoids copying the drawing state for the current line onto the stack.
* Sound register handling uses the byte offset from FF00 instead.
* `LD Reg, Self` is optimised away. `XOR A, A`, `SUB A, A`, `AND A, A`, `OR A, A`, `LD A, Reg` and `LD Reg, A` have optimised implementations.