IM3: replace tabs with spaces and remove trailing whitespace
IM3: close file handles and make internal classes static

This is necessary to make automated tests pass on .im3 files.
xsd-fu: Tighten const correctness in model and store getters
xsd-fu: Store setters for MapPairs must be const references
xsd-fu: MetadataRetrieve getUUID is const correct
formats-api: Add missing GenericExcitationSourceAnnotationRef in MetadataConverter
cpp: ome-xml: Add MetadataConverter
cpp: ome-xml: Generalise MetadataConverter

Use a templated transform function to convert between the retrieve
and store objects using method pointers and indexes.
cpp: ome-xml: Simplify MetadataConverter

Move all functions into a MetadataConverter class.  src and dest
are now class members, so don't require passing around, including
to the transform methods.
cpp: ome-xml: Further simplification and reformatting of MetadataConverter
cpp: ome-xml: Align MetadataConvert conditionals with the java equivalent
cpp: ome-xml: Document MetadataConverter
cpp: ome-xml: Add coverage test for MetadataConverter
ome-xml: Add missing LightPathAnnotationRef to MetadataConverter
ome-xml: Add missing InstrumentAnnotationRef to MetadataConverter
Merge remote-tracking branch 'origin/develop' into cpp-metadata3
Merge remote-tracking branch 'origin/develop' into im3

Conflicts:
	components/formats-bsd/src/loci/formats/in/IM3Reader.java
Prevent potential NPEs when close() is called
cpp: ome-xml: Drop unimplemented setMaskBinData from MetadataStore

This was stubbed out, but it's not possible to implement due to
the needed methods and implementation being unavailable in the
BinData model object.

It's not possible to remove from the Java templates due to it
being used in the OMEROMetdataStoreClient implementation,
despite it being broken in bioformats.
NDPI: ignore marker tags if we have reason to believe they are incorrect

This prevents the marker values from being read incorrectly, at the
expense of a slightly longer initialization time.