Extracted Dataset/Image metadata interfaces

Converted Dataset/ImageMetadata classes to an interface/default
implementation paradigm.

This will allow for enhanced flexibility.
CoreMetadata uses correct ImageMetadata API

Updated the SCIFIO ImageMetadata API usage in CoreMetadata.java, to now
use the correct channel lengths/dimensions and RGB signatures.
Fixed APNGFormat warning

Removed Translator import form APNGFormat to fix any compiler warnings.
DefaultDatasetMetadata use implemented

Classes using DatasetMetadata have been converted to use the default
implementation.
Fixed SCIFIOFormat javadoc

Fixed a typo in the SCIFIOFormat javadoc.
Added header to SCIFIOService

SCIFIOService was lacking the standard source header. Corrected this.
Removed SCIFIODiscoverable interface

This interface is not used anywhere and is completely unnecessary. Thus
it's being removed.
Fixed warning in AWTImageTools

Added a generic wildcard (<?>) to fix a compiler warning in
AWTImageTools.
Added get() method to DatasetMetadata

DatasetMetadata now has a get(imageIndex) method that returns the
corresponding ImageMetadata.
Pushed DatasetMetadata functions to ImageMetadata

DatasetMetadata was performing indexes into arrays returned by
ImageMetadata.

This behavior is now more agnostic, as the appropriate accessors were
added to the ImageMetadata interface. Now, DatasetMetadata simply
delegates all functionality to ImageMetadata, as it should.
Plane implementation

Added a Plane class hierarchy.

The Plane interface is untyped, with a generic plane type introduced by
DataPlane.

The two currently supported plane types are ByteArrayPlane and
BufferedImagePlane, which correspond to the performance of Bio-Formats
(returning a byte[] or BufferedImage).

Planes are intended to be returned by Readers, via openPlane methods,
and represent a plane of the Image currently being read.
Converted FakeFormat to SCIFIO components

FakeFormat was converted to SCIFIO components to facilitate unit
testing, as many existing unit tests create .fake paths. This will allow
core SCIFIO functionality to be tested more thoroughly.
Changed "no" to imageIndex in AWTImageTools

The "no" notation was from Bio-Formats. In SCIFIO, desginations should
be clearly "planeIndex" or "imageIndex".
Fixed compiler warnings in SCIFIOMetadataTools

Added wildcards (<?>) to generic DatasetMetadata usage in
SCIFIOMetadataTools to eliminate compiler warnings.
Fixed compile warning in AbstractOMEXMLMetadata

Removed unused import to fix a compiler warning.
Added null check to ICSOMETranslator

Avoided a potential NPE when checking Double values by adding a null
check.
Added resolveRefs call to OMEXMLMetaTools

Added a missing resolveRefs call to OMEXMLMetadataTools to reflect
pre-scifio functionality.
Renamed APNG nested classes

All the APNG chunk classes were renamed to drop the "APNG", as it was
unnecessarily wordy. As with the other components in a Format, the
format prefix is implied by being a nested classes.
Typed/Untyped interface split

For the base components (Reader, Parser, Metadata, Format, Translator,
Writer) that used generic typing, the interfaces have been split out so
that the lowest level API does not involve generics.

As concrete classes are able to specify what components they are related
to, the generics are rarely if ever present at the concrete level as
well.

This allows the user to be shielded from the complicated syntax of
generic parameters, while still gaining type safety in defining the
relationships between various components.

This commit includes the necessary refactoring for classes to use typed
or untyped components, as appropriate.
Legacy layer refactored for typed/untyped usage

Corrected the generic usage in the legacy layer, regarding the
typed/untyped component split