WinEvent: add UI-specific window object as a field

It is useful to have access to the UI-specific window in some
circumstances. This is, after all, the window which is actually being
affected by the relevant events.
AbstractPlatform: eliminate protected field

Protected methods are much safer than protected fields, because they can
be overridden as necessary. So we store the actual field as private, and
provide a protected method for accessing it.

For further details, see:
http://developer.imagej.net/coding-style#Private_over_protected_fields_and_methods
AWTWindowEventDispatcher: add null display ctor

It is now possible to dispatch WinEvents for a window with a null
display, by explicitly providing the EventService to use.

We will use this shortly to dispatch WinEvents for the main application
frame.
SwingUI: dispatch WinEvents for the main app frame
Guard against null display in WinEvents

Now that the main application frame dispatches WinEvents with a null
display, we need to be more careful.
MacOSXPlatform: reuse the same JMenuBar

This eliminates usage of the buggy Application.setDefaultMenuBar method
in favor of the same solution used by ImageJ1: hot-swapping the menu bar
to each window as it is activated.

For further details, see:
http://stackoverflow.com/questions/16175884
QuitProgram: do not call System.exit

The JVM will shut down gracefully without it, since the resource
disposal issues of MacOSXPlatform have been resolved now.
Make sure PixelRecorder users release resources
Fixup resource leak
Always dispose the prompt dialog

This one liner enables IJ2's disposal code to work and successfully exit the
program. Without this the app will not quit.
In MDI dialog always dispose the pane

This is a follow on fix to the SDI version.