Add a keyrelease DSL method symmetric to keypress

This adds a `keyrelease` DSL method to listen to the user releasing a
pressed key. It works like the `keypress` DSL method.

To make this easier, this patch:
* extracts `Keypressed` to a KeyEvent superclass
* extracts key event handling to it's own method
* extract SWT KeyListener (both class and tests)
* internally allow KeyListener to listen to all keyevents
* changes one of the samples to also report releases