Mouse things

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

Perhaps (just in this case?) by adding something like an `TypeUnknown` constructor to the datatype. But you're right, that's a general issue.