Adjust test to asses correct linkage to LightPath and Instrument
Port MultiplePlateTest from JUnit to TestNG
Fix GenericReferenceTest logic errors
Tabs to spaces and remove trailing white space
Port GenericReferenceTest from JUnit to TestNG
Fix DetectorSettingsDetectorTest logic errors
Tabs to spaces and remove trailing white space
Port DetectorSettingsDetectorTest from JUnit to TestNG
Add `ome.formats.*` to the server unit test suite
Make checkAndCollapseGraph() public for testing
Test case for checkAndCollapseGraph()
Reverse assertions to be inline with testNG
Expand test case to cover ObjectiveSettings
Expand test case to cover LightSettings
Expand test case to cover DetectorSettings
Add getUniqueLightPath() method to optimise performance

This new method will reduce the number of LightPath objects
and by extension LogicalChannel objects when importing large
plates with these metadata populated.
Add the collapsing of LightPaths to the method Javadoc
Exclude tests under ome.formats.
Check table metadata value type against Python type not numpy

Pytables may store values as numpy types (auto-converting in some cases) or native python types, I think it depends on the version. The numpy types appear to be derived from the native Python types, so isinstance should be more reliable.
Fix table.setAllMetadata

setAllMetadata now removes all existing user metadata and replaces it with the given map.

Note additional type-checking in HdfStorage.add_meta_map has also been added.