App: add about(), prefs() and quit() methods

These methods were previously part of the AppEventService, but make more
sense as App-specific methods. That way, each app can control the way it
handles these functions.

Another important consequence of this change is that we no longer need
multiple AppEventService implementations competing to define the
behavior of these three operations.

This avoids a cascade/domino problem where AppEventService is a
SciJavaService, but individual apps like ImageJ2 override behavior with
e.g. LegacyAppEventService which pulls in lots of IJ2 dependencies into
a "SciJava-only" context.

By making it handled at the plugin level, we avoid the issue because
those plugins simply fail to initialize as desired when the required
services are unavailable to the context.
Migrate handling of AppEvents to AppService

This deprecates the AppEventService, moving the event handlers into
the DefaultAppService. Each event handler method simply invokes the
respective method of the highest priority app.
Merge branch 'app-cascade'

This branch reworks how the AppAbout, AppPrefs and AppQuit events are
handled, such that a dedicated service is no longer necessary.

Instead, each App plugin now defines its own implementation of these
methods.