ENH: Removal of iohub KeyboardCharEvent +++

1) keyboard device now generates press and release events only

2) release event now includes duration and key_press_event_id fields

3) added 'char' field to keyboard events, as per iohub 2.0 changes plan.
a) char field only really used on Windows so far; holding unicode value
for key pressed. 'key' field changed to provide psychopy key mapping
equiv. On Linux and OSX, key field has not yet been changed, so it still

gives unicode value.

3) Added psychopy side iohub device event wrapper base class.
a) When iohub device is created, if there is a psychopy side device
wrapper, it is used instead of standard iohub client device. If none
exists, device logic is unchanged.
b) Implemented psychopy Keyboard device wrapper. Has similar methods as
getKeys and waitKeys, which return much simplier event structs. All per
iohub 2.0 change list agreed in spring. Only used on Windows so far.
Other OS's do not use wrapper yet. Will add as priority after change
backlog is cleared.