Event helper

Do not merge this until it's been tested with touch controls. Touch and multi-touch have not been, and need to be, tested.

Other than that, it seems that this branch successfully adds mouse controls, and provides a layer of abstraction so we don't need to worry about touch vs mouse controls.

I need to go to bed. >.>