Optimisations

I wish to push some early optimisations to your master branch.

Summary:
* Reduce binary size by 2.5 KiB.
* 7 ARM9 instructions saved per readMemory and writeMemory call.
* Hotspots (according to profiling) that are too large to fit in the ARM9's cache are placed into the ITCM.
* Data used by hotspots is placed into the DTCM. Currently that's just the opcode cycle arrays, which would get placed into and out of the cache constantly.

Your asmcore branch could make use of these optimisations as well; however, as your findings have not reported any sizeable optimisations using your ARM9 assembly core, I have decided to base Nebuleon/GameYob/optimisations upon Drienn/GameYob/master.

The optimisations should apply cleanly to asmcore except the opcode handler. ITCM_CODE is a macro that places the code in the .itcm section, so you could place your code in cpu.s into the .itcm section in asmcore.