Minor cleanups
Refactor SDL graphics

Use unique_ptr for SDL_Surface.
Refactor blit_tiles function.
Clean up Sprite class.

(This change ends up fixing some missing sprites in zelda. Not sure how.)
Use an object to wrap SDL_Init.
Add Controller Object

Refactor the controller code into a separate object.
Fix some more instructions

Rewrite DAA. Still fails automated test.
Fix ADD SP, r8 & LD HL, SP+r8
Refactor the CPU emulation

Use references instead of switch statements.
Standardize opcode steps.
Rename registers (_A -> _rA).
Update graphics

Render to a screen surface, then blit to the window.
Start on sound

First two channels are (mostly) emulated.
The frequencies might be off due to math errors.