WIP: Mouse controller

The basic functions seem to be working pretty well. @Eric89GXL and @drammock, if you have any time tomorrow morning, can we check to see if what I did makes any sense?

I'm pretty sure the subclassing stuff doesn't need to be in there, since a mouse is always a mouse, but I didn't take it out since it currently works and if that stuff does need to be there it will be annoying to put back in.
This type of functionality should really belong in the `Visual` classes, since it's really a property of the visual itself. Each visual object should have a property `Visual.hit_testable = True | False`, and if applicable a method `Visual.point_in_object(pos, units)`. That way the `mouse` class just needs to turn pass along the coordinates. We can save this for the next test-adding PR, though, if you want, since it's not a quick fix.