Overhaul the whole key binding determination process

* The new sealed class KeyResult represents the result of looking up a
  possibly incomplete sequence of keys and lets key sequences yield
  statuses as well. It also prevents boolean blindness.
Cheap screenshotting command via java.awt.Robot