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.
s/key/button