Make SwingDialog#show work with non-modal dialogs

JOptionPane#showDialog does not return an Integer in the
case of a non-modal dialog; instead it returns a String:
JOptionPane#UNINITIALIZED_VALUE.

We now return our own integer constant, NON_MODAL, in that case.
And in other non-Integer cases, we return another new constant: UNKNOWN.
AbstractInputHarvester: extend AbstractContextual

Input harvesters are contextual, and the abstract base class had no
other superclass, so we might as well use the contextual base class to
reduce boilerplate code.
SwingInputHarvester: tweak style
WIP: input harvester should still block...

...even if dialog is non-modal. Or should it? On the one hand, waiting
till the non-modal dialog box is dismissed before continuing to "run the
command" might make sense. But it also might make sense to just run it
once right away when the non-modal dialog first appears. (Either way
though, probably doesn't make sense to just cancel when the non-modal
dialog box appears, which is what I think is happening at the moment.)