FormatReader: Add setCoreIndex, toSeries and toCoreIndex

setSeries and getSeries work by using coreIndex to compute the correct
value (replaces series), while getCoreIndex and setCoreIndex use the
coreIndex directly.  Readers using series directly have been fixed to
use getSeries.

toSeries and toCoreIndex methods convert between series and core index
numbers, and handle resolution flattening.  All functions dealing with
series numbering use these to handle conversion.
LeicaSCNReader: Handle 2010/10/01 schema

Allow use of both the
  http://www.leica-microsystems.com/scn/2010/03/10 and
  http://www.leica-microsystems.com/scn/2010/10/01
schemas.

- In order to handle both schemas identically, the pixels element
  sizeR/sizeZ/sizeC/firstIFD attributes are no longer parsed; instead
  the sizes for R, Z and C are computed from the dimensions elements.
  We do require that the dimensions are a non-sparse array.
- Fix data order as XYCZT (this matches the existing test cases).
- Thumbnails:
  + Correct IFD mapping for thumbnails
  + Get thumbnail size from correct image
  + Use flattened resolutions when getting thumbnails
LeicaSCNReader: Work with any schema version

Warn if the schema is unsupported, but otherwise try to read it.
Add setCoreIndex to DelegateReader and FileStitcher

This required adding toSeries and toCoreIndex to IFormatReader
(and hence ImageReader).
Rename toSeries to coreIndexToSeries and toCoreIndex to seriesToCoreIndex
FileStitcher: Don't use subresolutions conversions

Subresolutions are not supported.  This removes the need for
series ↔ coreIndex conversion, since they are always the same.
FileStitcher: Add seriesToCoreIndex and coreIndexToSeries methods

These override the ReaderWrapper implementation, and return their
argument (since subresolutions are not supported).
FileStitcher: Delegate seriesToCoreIndex and coreIndexToSeries to reader
LeicaSCNReader: Use LOGGER rather than System.out
LeicaSCNReader: Remove unused commented definition
FormatReader: Maintain series in addition to coreIndex

This enables getSeries to be O(1) in addition to coreIndex.
seriesToCoreIndex and coreIndexToSeries are also O(1) when
the current series/coreIndex matches their arguments.

FileStitcher also has a series member, but this is currently
unused; it was added purely to match the FormatReader behaviour.
FormatReader: Cope with null core metadata
Merge remote-tracking branch 'origin/develop' into leicascn-newschema
BDReader: Don't use getSeriesCount before core[] is initialised
CoreMetadata: Provide simple copy constructor and use in readers

The existing constructor using a reader and series number has
two problems:
- it's unsuitable when using non-flattened resolutions since
  one can't directly specify the subresolution
- getSeriesCount will fail if the core[] array is not yet
  fully initialised, making this unusable when using during
  initialisation and strictly validating core[]

Here, a new (simple) copy contructor that does a simple copy
of the CoreMetadata is provided, and this is used directly
in all readers.  This is safe since they are copying their
own metadata, so avoiding the reader interface is not a problem
here.

We also update the existing constructor to use a core index
instead of series, so that it will work for all readers,
whether flat or nonflat, and internally we use setCoreIndex
and getCoreIndex.
CoreMetadata: Fix two syntax errors
Merge remote-tracking branch 'origin/develop' into leicascn-newschema
Merge remote-tracking branch 'gh/leicascn-newschema' into test
FormatReader: setResolution adjusts coreIndex

Without this, setResolution has no effect.
FormatReader: Switching series sets resolution to zero

This prevents the resolution from being out of range after switching
series.  There is no evidence of code relying on the side effect of
the resolution being preserved after a setSeries() call.