Add bit reading methods to RandomAccessInputStream
Deprecate BitBuffer in favor of RandomAccessInputStream
Update readers and codecs to use RandomAccessInputStream for bit operations
Add bit writing methods to RandomAccessOutputStream
Deprecate BitWriter in favor of RandomAccessOutputStream
RAIS: do not call skipBytes when there are no bytes to skip
Add unit test for reading and writing bits
Use readByte() instead of read() for processing bits
cpp: Add FormatWriter
cpp: FormatReader: Drop metadata being string only comment
cpp: FormatWriter: Drop unnecessary FileGroupOption copied from FormatReader
cpp: FormatWriter: Drop BitsPerPixel and Interleaved

These are now in the data model and unnecessary to have as writer methods.
cpp: FormatReader: Fix typo in get16BitLookupTable
cpp: FormatWriter: Add set*LookupTable

This allows setting of LUTs in the absence of the Java
ColorModel API used by the Java implementation.
Close the RandomAccessInputStream in a finally block

As the stream is wrapping a byte array, there isn't a file handle
involved; this can't really hurt though.
Use 'if'  instead of 'while' for skipping bytes

currentBit will not be greater than 7, and skipBits will not be greater
than 7, so at most one extra byte needs to be skipped.
Make sure the dirty byte is flushed before writing bytes
Tidy up bit writing and skipping methods
Prevent memoizing from failing if the lwfDecoder jar is not present

loci_tools.jar and bioformats_package.jar do not contain the lwfDecoder
class (so that users more easily use the non-stub jar if they have it).
This caused memo file creation to fail when
loci_tools.jar/bioformats_package.jar were the sole classpath entries.
Zip: do not store the helper reader in the memo file