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
Removing the types from listeners and instead introducing subclasses

* I think that objects with a type instance variable are a smell
  and should rather be proper subclasses. So that's what I did.
  And it removed an if. I bet Tom would be proud of me :-)
* Also removed the unused opts argument and some unused instance
  variables. They're just confusing.
* I kept the main class and the subclasses in one file since they
  add very little (or even nothing) to the main class
Merge pull request #358 from PragTob/skade-feature/keyrelease

Some adjustments from the add a keyrelease PR