Add modifier key functionality into Clyde.

This change adds support for modifier keys. Presently there are four available
(occupying the upper 4 bits in the 'key' long).
1.) When a modifier is held down, it is not reported as a keypress until a
pairing key is pressed.
2.) When a key is pressed which does not use modifiers whatsoever, it is
shortcircuited and ignored.
3.) When a key is pressed which DOES care about at least one modifier,
it is treated as held-down. Then, if the modifier key state changes a
notification is sent out for both release and press of the new combination.
4.) Modifier keys and keys which care about modifiers (users) are cleared
whenever keys are rebound. Users are set when adding their listener.

This is a functional first pass at least. It is likely some of the
mechanics will change.