Add an interactive command base class for e.g. B&C

The base class listens for changes to the active display, and keeps
linked parameters in sync with those changes.

The input harvester will also special-case this sort of command to use a
floating (non-modal) dialog box instead of a blocking (modal) one.
Make interactive commands non-modal
BrightnessContrast: extend InteractiveCommand
Make mutable modules into first class citizens

Previously, the API was specific to the DefaultModule, DefaultModuleInfo
and DefaultModuleItem classes, and not defined in any interfaces.

This made it more difficult to deal with Java single inheritance, since
anything wishing to provide the module mutation methods *must* extend
the DefaultModule* classes.
DynamicCommand: register event handlers properly

The recent refactoring to make registration of event handlers more
automatic unfortunately left out DynamicCommands, which do not extend
ContextCommand.

We add an EventUtils convenience class to minimize the repetition (which
is necessary because Java only supports single inheritance).
Add a CommandUtils class to avoid repeated code

This is very similar to the recently added EventUtils. Both of these
classes merely delegate to the respective service of a given context...
but only if such a service exists.
WIP