Add class for representing a modulo dimension
OMEXMLService: add method to populate ModuloAlong* annotations
Add API for saving/retrieving Modulo objects

CoreMetadata internally keeps one Modulo object for each of Z, C, and T
(since that is all that the current schema supports).  These objects can
also be retrieved through IFormatReader's getModuloZ(), getModuloC(),
and getModuloT() methods.  All three Modulo objects will then be used
internally to populate ModuloAlong* annotations.
Update ImageInfo to print Modulo information for all dimensions
Remove cLengths/cTypes references from non-FLIM readers
ImspectorReader: populate Modulo objects
ImageInfo: fix whitespace in dimension descriptions
Modulo: fix off-by-one in length calculation
Automatically populate ModuloAlong* annotations

Each annotation is only populated if the corresponding Modulo length is
non-zero.  Any populated annotations are linked to the corresponding Image.
ICS: do not use cLengths or cTypes
OMEXMLService: prevent NPE if XMLAnnotations are not present
SDT: correctly populate Modulo fields

Since we are switching from using modulo C by default to modulo T, this
also requires a change to openBytes so that interleaved channels are
separated before being returned.
Fix off-by-one when printing dimension information
Update default implementations of getChannelDim*()

Values from the moduloC variable in CoreMetadata are now used by
default.
FileStitcher: update invalid Modulo values as needed
Allow the Modulo dimensions to be specified as doubles

This is needed if the units are something other than planes.
SDT: switch which T dimension gets the Modulo annotation

That allows us to set the TypeDescription to "TCSPC" as well.
Fix rounding when calculating length from doubles
SDT: store the Modulo dimensions in ps
APNG: fix row count for images that contain a single byte

Fixes ticket #11421.