ij-data: fix alphabetization of dependencies
DatasetService: add I/O convenience methods

These methods allow you to open, save and revert datasets.

They are extremely similar to similar methods currently provided by
IOService, as well as the SaveAsImage command in ij-commands. The reason
to centralize them here is in preparation for a generalization of
IOService act as a HandlerServer for arbitrary IOPlugins. After that
happens, DatasetService will be the compile-safe place to open and save
datasets, whereas IOService will be the general-purpose place to open
and save data of any type.
Use new DatasetService I/O methods

In preparation for removal of the Dataset-specific I/O methods from
IOService, we switch over to using the shiny new DatasetService I/O
methods designated for this purpose.

Most of the changes are very straightforward and have resulted in much
simpler code. Note that the changes to SaveAsImage are a bit involved
though; although its complexity was reduced in some places, a few hacks
remain until SCIFIO's ImgSaver becomes better at N-dimensional saving.
Add an I/O plugin type for extensible data I/O

This plugin will go hand in hand with the new, forthcoming IOService,
providing a generalized and extensible mechanism for opening and saving
data (e.g., the File > Open and File > Save commands).
Remove the obsolete StatusDispatcher class

It was only used before SCIFIO converted to the SciJava Common
application container and started using the built-in StatusService.
Add an I/O plugin for Datasets

It is short and sweet thanks to the new DatasetService I/O methods.
Add an I/O plugin for text formats

It standardizes incoming text to HTML, so that it can ultimately be
displayed in an HTML-based rich text viewer.

The implementation is nice and simple thanks to the TextService.
Add an I/O plugin for LUTs

The implementation is simple because it leans on the LUTService.
Refactor the IOService and move it into ij-core

The IOService has kept the same package (imagej.io) but migrated into
ij-core, because its dependency on ij-data has been purged. It is now a
general-purpose service fitting the Handler pattern (see
HandlerService), with available IOPlugins extending its capabilities.

The FileEvent hierarchy has been repurposed as IOEvent:

* image.io.event.FileEvent -> imagej.io.event.IOEvent
* image.io.event.FileOpenedEvent -> imagej.io.event.DataOpenedEvent
* image.io.event.FileSavedEvent -> imagej.io.event.DataSavedEvent

These events are now published whenever the IOService opens or saves
data, so individual IOPlugins do not need to care about it.

The ImageFileDragAndDropHandler has been generalized into a
FileDragAndDropHandler which uses the IOService to handle *any* File
which is dropped into ImageJ.

Lastly, the RecentFileService and OpenFile command have been updated to
reflect these API changes.