Gameshark cheat codes support
Description
Now that we have cheat support provided by #29 (closed), we should also implement GameShark support.
Gameshark works differently by intercepting the read and writes to the internal and external RAM storage (from here).
Implementation
The tricky part of Gameshark will be to patch the MMU without a significant performance penalty when not using cheats.
It's also going to be important to avoid bounding VBlank and any kind of explicit patching. We'll have to have small decoupling techniques to avoid this.
References
Edited by João Magalhães