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. It's intended 
to make robots fly better at #rcd13.

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