Refactor|libgui: KeyEvent class

KeyEventSource now produces an instance of KeyEvent.
Refactor|Client: Pass key events to window system, widgets

The key events produced by the Canvas now are passed to the window
system and therefore widgets. Now widgets are able to immediately
process keys when an event is received.