Add BaseZeissReader

This is a base class for use by both Zeiss AxioVision ZVI and
TIFF/XML formats, containing all common functionality and
datatypes.
ZVI reader uses common base class

ZeissZVIReader extends BaseZeissReader.  Common code is used for
parsing tags, storing metadata and ROIs.
Add new reader for Zeiss TIFF/XML format

This includes a reader (ZeissTIFFReader), which extends the
common BaseZeissReader, and an XML SAX parser (ZeissTIFFHandler),
which is used for parsing and storing the XML metadata.
Enable Zeiss TIFF/XML reader
ZeissTIFFReader: Use MimimalTiffReader for reading image planes

This speeds up image loading by several orders of magnitude.
Add case insensitive file and location classes

This is not optimal for speed, having to perform a lookup for each
file in the directory, and correctly detect duplicates.  This could
be improved by immediately returning if a match is found, and
avoiding the costly insensitive lookup, at the expense of not
identifying duplicates.  Alternatively, some form of caching would
prevent the need for repeated directory scans.
ZeissZVIReader: Use CaseInsensitiveLocation

The filenames in the metadata do not necessarily match the case of the
filenames in the filesystem.  They may additionally be changed when
transporting files between different operating systems or filesystems.
This makes all pathname lookups case insensitive so that case issues
are handled transparently.
CaseInsensitiveLocation: Incorporate cache internally

Remove CaseInsensitiveLocationCache.java.
Add static methods to invalidate the cache.
Make Location fields private again.
Update ZeissTIFFReader to use the new API.
CaseInsensitiveLocation: Simplify cache structure

Use a 1:1 mapping rather than 1:many.  It means it's slightly
faster and we bail out earlier in the face of multiple files
mapping to the same insensitive name.
ZeissTIFFReader: Use a vector for storing used files
ZeissTIFFReader: Convert basedir to case sensitive form
ZeissTIFFReader: Further capitalisation correction of pathnames
ZeissTIFFHandler: Cope with different variants of ShapeAttributes size

It has been seen to be 152 or 156 bytes, all from the same AxioVision
version.  This is likely dependent upon whether a specific encoding
was used (but since it's UTF-8 in all cases, this appears redundant).
The different variants were all generated with AxioVision 4.8.
ZeissTIFFReader: Handle buggy images with incomplete tiles

Some images have tiles with varying numbers of slices in each
tile.  Ensure that each separate image (tile) contains the
same number of planes, and remove tiles which contain less than
the maximum found in all other planes.
ZeissTIFFReader: Correct missing path in used files list

The main file (origname) had its path stripped if the file
was a multifile image.  Correct the calculation of the
base directory name, so we can compute the correct path.
Merge remote-tracking branch 'origin/develop' into zeisstiff-merge

Conflicts:
	components/bio-formats/src/loci/formats/in/ZeissZVIReader.java

Merged model changes in ZeissZVIReader into BaseZeissReader
BaseZeissReader: Don't mix polylines and polygons
Add first version of bfsave function (#4112)

- Take a 5D matrix and a path string as input
- Support dimensionOrder as optional input
- Add tests for al dimension orders
Set path in setup method to handle unix/windows case
Read from input the PixelsType to be set to the IMetadata

- Add (failing) tests for all data types