Minor fixes

Start PC at 0x0100 due to lack of boot_rom
Make the DIV register part of the clock device
Update audio

Add Sound3 (no sample support)
Add Sound4 (no polynomial support)
Add volume control (default to off)
Move more things out of cpu.h
Move Registers into separate structure

Update unit tests to just compare registers
Add macros to access new fields.
Remove the remaining unused test fields from cpu.
Update the debug printing.
Delete the CPU copy constructor.
Auto register/deregister devices.

Devices register themselves in their constructor.
Devices deregister themselves in their destructor.
Restructure the Emulator class (not happy with the results)
Add rough support for MBC3 so Pokemon works.
Fix Sound
Interrupt
Move Clock into Timer class
Remove interrupt debugging
Fix Makefile
Cpu: Update I/O range
Add better timing mechanism
Graphics: Async render
Timer device
Replace the linear device map search with a trie.

Add a simple trie which maps an address to a device.
Have devices register ports and use that to direct reads and writes.
The valid method is no longer useful, so remove
Minor cpu cleanup
Cleanup graphics registers
Add support for saving emulator state (Sound doesn't work)