iohub updates

* changes to iohub keyboard events now complete on Linux.
* Linux keyboard device code for gettings .key and .char values much smaller and faster. Hybrid python-xlib and ctypes xlib access approach used.
* Linux .key and .char mappings follow latest refinements in expected mapping rules:
    * .char only populated when printable character is generated from the keyboard event. Otherwise it is empty.
    * .key value is a str constant for each key pressed on keyboard, including modifier keys. The .key value is not affected by any modifier keys, differentiates keypad keys vs. standard keyboard keys, and is == to .char value when possible.
* Relevant iohub code now expects psutil version 2.x on ALL platforms.