A few more opcodes before a refactoring to implement the system timer.

add: EI, LDHL
change: DI is now template-based
Move GameBoy class out into its own file.

change: move GameBoy class out into its own file
Make the GameBoy class a bit smarter.  It now handles the debugger state and the amount of cycles to simulate.

refactor: move mainloopy stuff out of CPU and into GameBoy
Interrupts, basic timer work.  Sanity checkin while I figure out what's wrong with the timer test.

fix: HRAM covering IE register at 0xFFFF
add: Timer
add: CPU interrupts logic
fix: debugger prints next opcode before executing it
add: tracking of total cycles spent

Probably going to refactor all devices on the memory bus to break things apart, the Memory class is getting be a bit of a blob.
CPU fixes - ADD, ADC, SUB, SBC, RLCA, RRCA, RLA, RRA, SWAP; add SCF, CCF, AND, RLC, RRC, SLA, SRA, ADD, ADC, SUB, SBC

fix: carry logic for flags in ADC/SBC
fix: zero flag logic difference in RLCA/RRCA/RLA/RRA vs. extended RLC A, RRC A, RL A, RR A
fix: swap was reading/writing wrong src/dst
add: a bit of timer debugging code, to be cleaned up; sanity checkin
Remove F2 as illegal opcode (bad docs); support wake from HALT using interrupt.

change: remove F2 as illegal opcode (bad docs)
add: support wake from HALT using interrupt