Debugging improvements

change: debugger now prints instruction before the CPU executes it
change: debugger now shows interrupts propperly (i.e. when an interrupt occurs, the debugger will show the next instruction as being the ISR)
Move stuff out of MemoryBus so it can eventually be a simple shell for memory bus devices.

add: UnknownMemoryMappedRegisters class, which might eventually catch all unknown MMR operations (which seem like they're ignored on DMG hardware)
remove: MMR-related stuff from MemoryBus