Emu: Exception Handling

Make EmuException's construtor protected.
Make exceptions structures.
Add a message string to exception handlers.
Add new exceptions for various cases.
Emu: Rework input lines.

Rename InputLine to just Line.
Add lines for address and data.
Add helper functions to make a Line.
Rename set_line on device to just line.
Add a new set_line on the machine.

TODO:
Handle pulse using a timer.
Move machine::dev() private
Emu: Input Port changes

Rename InputPort to IOPort.
Use accessors instead of direct access.
Emu: Separate CLI/SDL from the rest of the system.

Add a new class called Emulator that will do the heavy lifting.
Move the cli option parsing to sdl_main.cc
Emu: Cleanup input mapping

Move IO stuff out of input.h
Rename InputDevice to InputMap.
Use InputSignal instead of direct functors in gameboy driver.
Move namco51 input lines to the galaga machine.
OSX: Implement a wrapper for OpenGL ES 2.0 support
Emu: Replace lambdas with bound functions.
Remove useless file
Cpu: Add huc6280, the 65c02 derived TG16 Cpu
Emu: Emulator updates

Add a reset function that resets all devices in a machine.
Pull the rom path out of an environment variable.
TG16: Turbografx-16 Emulation

Initial commit of turbografx-16 (PC Engine) support.
Extremely rough around the edges.

TODO:
Fix/Implement proper sprite handling.
Implement timer support.
Emulate the VCE faithfully.
Emu: Replace mask with range

Use a [start, end] range instead of a start plus mask.  The radix tree lost out
to a simple hash so we don't need to support it anymore.
Emu: Fix includes

Make includes absolute from the root directory.
Split into 3 top level projects (SDL, OSX, iOS)

Use Cmake to build.
Consolidate the code under driver.
We can now build for either iOS or OSX using cmake
Adds a basic Cocoa GUI for OSX.
A lot of the abstractions for SDL were excessive and removed.
Update the graphics handling.
Emu: Refactor the machine abstraction

Make the machine data private.
Ditch the render callback nonsense.
Add functions to access input mapping.
Make the namco06 timers local.
Clock the machine in realtime.  (Might have broken iOS).