Woolz: make sure the service is initialized when calling openBytes

If planes are being opened after initialization from a memo file, the service may not have been
set up.  This attempts service initialization any time the service is null during an openBytes call.
Add initial support for reading BinaryOnly OME-TIFF datasets

This adjusts the type detection slightly so that .companion.ome files
are detected as OME-TIFF, not OME-XML (as this makes finding and reading
the corresponding OME-TIFF files much easier).  Selecting either a
BinaryOnly OME-TIFF file or the corresponding companion OME-XML file
should result in the entire dataset being read.

Fixes #11951.
Catch NPEs when calling getBinaryOnlyMetadataFile
Ignore metadata files with a .tif/.tiff suffix

Some Prairie datasets contain "OME-TIFF" files with a BinaryOnly entry
that points to a different "OME-TIFF", which is not valid.
cpp: ome-bioformats: PixelBuffer uses MultiArray and multi-endian pixel types
cpp: Correct PixelBuffer includes
cpp: Correct PixelBuffer trigraphs
cpp: Add signed, floating and complex pixel properties
cpp: pixelbuffer test: Correct out of bounds array indices
cpp: Allow setting of PixelBuffer storage order from model DimensionOrder
cpp: PixelProperties: Add signed, floating and complex properties
cpp: Add additional VariantPixelBuffer methods
cpp: PixelBuffer Add initial binary stream I/O support

Add all the interfaces and operators.  Actual implementation and tests
are currently stubbed out.
cpp: Implement forwarding methods in PixelBuffer
cpp: Add storage_order forwarding methods to PixelBuffer
cpp: Add initial stream read and write details to PixelBuffer
cpp: Add PixelBuffer stream I/O tests and fix ordering
cpp: PixelBuffer array() method will never return null
cpp: Add PixelBuffer data() method
cpp: Document new PixelBuffer methods