DefaultLegacyHooks: do not override quit() anymore

Actually, when ij.ImageJ#quit() is called, we want to let ImageJ1 take
care of itself normally, for the most part. We really only want to do
two things in addition:

1) Close down more windows via the WindowManager#closeAllWindows() hook.

2) Dispose of the SciJava context, once it is certain that ImageJ1 is
   really going to shut down, via the LegacyHooks#disposing() hook.

That way, ImageJ1 is still free to call System.exit in the same
situations where it normally would.
IJ1Helper: tweak javadoc
IJ1Helper: record that we are currently disposing

This allows external code to query the IJ1Helper to verify whether it is
currently in the process of disposing, via the new isDisposing() method.
DefaultLegacyHooks: make closeAllWindows do more

When ij.WindowManager#closeAllWindows() is called, there are some
windows that it fails to close down. In particular, any non-Frame
non-image windows such as PlugInDialogs are not handled. For example,
the ContrastAdjuster spawns a new thread which will only terminate
when the ContrastAdjuster window is disposed, but the
WindowManager#closeAllWindows() method will not do that.

Further, ImageJ1 does not grant the user the opportunity to confirm
dismissal of certain types of windows. Specifically: under certain
circumstances, any non-image window which is not an
ij.plugin.frame.PlugInFrame, ij.plugin.frame.Editor or
ij.text.TextWindow will be forcibly dismissed via its dispose() method.

See:
https://github.com/imagej/ImageJA/blob/v1.49c/src/main/java/ij/WindowManager.java#L391-L401

As such, and keeping in mind that ImageJ1 is intended to run as an
end user application in its own dedicated JVM, this commit makes the
closeAllWindows routine go the whole nine yards, and really close down
_all_ Windows in the JVM, while _always_ giving the user the opportunity
to cancel closing them down. Of course, it would be ideal to close down
only those windows associated with ImageJ1, but unfortunately we have no
way of knowing for certain which windows those are, since an ImageJ1
plugin can create and show any arbitrary Windows of its choosing,
without registering them with the WindowManager.
When shutting down IJ1, dispose the context too

There are essentially two ways ImageJ1 can be shut down:

1) From the ImageJ1 side; i.e.: ij.ImageJ#quit()
2) From the SciJava side; e.g.: LegacyService#dispose()

When IJ1 is shut down via its quit() routine, it should be done
"softly", asking the user to confirm the closure of various windows,
etc., before finally disposing of ImageJ1's resources as well as the SJC
context. System.exit should be called under exactly the same
circumstances as when IJ1 would normally do it.

When IJ1 is shut down via the legacy service, it should be done "hard",
without prompting the user to confirm anything. This form of shutdown
should not trigger a disposal of the SJC context, since A) it might
already be in the process of being disposed; and B) if it isn't already,
then it is almost certainly not desired for it to happen.

This change makes sure that when IJ1 is shutting down in the former
case, the SJC context gets disposed too, but that when IJ1 is shutting
down in the latter case, an SJC disposal is _not_ triggered.