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.
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
cpp: PixelProperties: Add pixelTypeFromBytes and pixelTypeFromBits

Also move some of the inline content of PixelProperties.h to
PixelProperties.cpp.
cpp: PixelBuffer: Add subsetting in the future
cpp: PixelProperties: Add isSigned, isFloating and isComplex functions