Mouse things

These commits implement SDL.Input.Mouse module and adds some more Haskellish types to work with in mouse-related events.

That module in general doesn't much check much for undocumented values so I tried to be consistently bad(?). I think we should decide on how to deal with such cases though.