Provides a better abstraction layer for the events, and make both touch
and mouse events correspond to that API.
This doesn't yet support multitouch, and trying to use multitouch will
result in some pretty hilarious effects, like resistors changing start
nodes, or things flying all over the screen.
Progress on #24