Restored loci-legacy CaseInsensitiveLocation

Reverted the loci-legacy CaseInsensitiveLocation back to its old state.
It now has the correct git log --follow history, although it is missing
some (non-specific) history between the original breakage and this fix.

Unfortunately, the original mistake could not be corrected as it was
already merged to develop.
Added abstract typedParse method

AbstractParser now defines a typedParse method. This functions similar
to the Translator typedTranslate method, allowing post-parsing
operations to occur automatically (e.g. population of ImageMetadata).
wip: remove this when merged to develop

* Updated version to 4.5-SNAPSHOT
* Corrected typo in groupId tag
* Changed dependency from loci-common to loci-legacy (loci-common is an
  empty pom project that exists for backwards compatibility)
* Added scifio-tools to top-level pom.xml so it will be included on
  top-level maven commands and imports.
Fixed NPE when adding axes 1 at a time

If no axes existed, the axis arrays were null - as there was no reason
to construct empty arrays.

This condition is now checked and handled appropriately.
Updated service indexes

All SCIFIO default services are now indexed under the most granular type
possible to enhance searching capabilities.
Fixed LUT usage in AWTImageTools

The ome.scifio AWTImageTools will now properly use LUTs attached to
planes when dealing with indexed images.

To facilitate this, the legacy AWTImageTools now attaches the legacy
reader's lut to the freshly created plane used in delegation.
Enhanced AbstractImageMetadata adding axes

When setting Axes lengths, AbstractImageMetadata will now perform
checking to see if the requested axis is actually present. If not, it
will be added automatically.
Set OMEMetadata source when writing (legacy)

The SCIFIOFormatWriter will now set the source of the OMEMetadata before
translating it to the destination, in case the source is necessary
during translation.

The source is closed to avoid memory leaks.
AVIFormat conversion

The loci.formats AVIReader and AVIWriter have been converted to a single
AVIFormat in ome.scifio.formats.

The legacy classes are new delegators, which pass all functionality to
the SCIFIO implementation.

Supporting classes have been copied to SCIFIO (codecs and the
UnsupportedCompressionException) but will be converted to delegators at
a later date.
Removed populateImageMetadata from abstract layer

The empty implementation of populateImageMetadata has been removed from
AbstractMetadata. This is to encourage its implementation with each new
concrete metadata type. This information must always be known, and its
generation will be different for each format, so there is no reason to
have an empty implementation in the abstract layer.
Added sub-resolution skeleton

SCIFIOFormatReader now has skeleton implementation for the
sub-resolution API methods.

These are not considered supported in SCIFIO at this time, merely added
for runtime safety.
Converted BMPFormat

The loci.formats BMPReader has been converted to an ome.scifio.format:
BMPFormat. The legacy layer now delegates all functionality to SCIFIO.
Corrected SCIFIOFormatReader#getCurrentFile

This method now defers to the SCIFIO layer, instead of relying on a
legacy variable.
Added putImageMetadataList method

SCIFIO metadata can now map keys to lists of values.
Added Groupable interface

Both the Parser and Reader have a need to deal with muiltiple files.
Thus a new Groupable interface was added, with a common Abstract class
that both can extend, to avoid repeating this API.
AbstractParser updates currentId properly

The currentId field should now be set when Parsing and cleared when
closing, as intended.
Removed parallel arrays from ImageMetadata

Parallel arrays are cumbersome to maintain, and in many cases parts of
the ArrayList implementation were being repeated to facilitate
re-ordering of the axis type and length arrays.

Instead, these values are now maintained in a List of AxisTypes, and a
map of AxisTypes to lengths.

This allows the AxisTypes to be dynamically rearranged without requiring
two arrays to be reorganized.
wip: Dicom