almost finished up write_byte

write_byte now works for almost everything except writing to rom(mbc).
writing to vram changes the associated array(s) and writing to io
can start dma transfers, update palettes, and change the associated
io hw array. I added some comments to the memory shortcut macros describing
their use and the range of addresses for the content they mirror in the map array.
also the mirror arrays can be read, but should NOT be changed as the changes
won't be reflected in the map array and may be ignored by code that accesses it.
mirror arrays should only be changed with write_byte().