Make ContextCommand and DynamicCommand Cancelable

It is very convenient for these two useful abstract base classes to
implement the Cancelable interface, and provide an internal
cancel(String) method for easy cancelation from within subclasses.

This makes the cancelation code across many commands much more DRY.
Use a common superclass for unimplemented commands

This reduces duplicate code, and also makes it easy to browse for all
unimplemented commands using an IDE (e.g., Ctrl+T in Eclipse).