Linux iohub keyboard event changes almost done now (I hope!)

Trying to make values across OSs used for 'same' key have the same value
in iohub. keyboard event.key will use the unshipped / modified value of
any keys that are non control keys or number pad keys. This makes the
transition of key values to other keyboard layouts / laguages /much/
mmore seemless. So if ';' is pressed, the evt.key value will also be
';', regardless of whether shift is also being pressed or not. evt.char
can be used when you want to factor in how modifier state effects the
key. So in this example, the evt.key = ':' when shift key is also being
pressed.

For non visiible keys, like home, up, return, etc, the evt.key and
evt.char values will in general be the same.

For numlock related keys, evt.key are not effected by numlock  state,
while evt.char is effected by the numlock modifier.

This will really clean up the keyboard key values used, and also make it
much easier for people to use any visible character key without needing
to remember what the key str label is. They just press the key and they
have the value needed to filter key events etc.