cpp: FormatReader: Merge get*LookupTable methods

Rather than having separate methods to get and set 8- and 16-bit
LUTs, there are now single methods which can get and set LUTs
of arbitrary size.
cpp: bioformats: Enforce interface copy protection and construction rules

Update interfaces to follow our guidelines.
cpp: tiff: Add ImageJ metadata parser
cpp: FormatReader: Remove unused commented-out code
cpp: FormatReader: Document exceptions
cpp: FormatReader detail: Update isThisType overloads

- All methods are const and so can not modify reader or writer state
- Add isFilenameThisTypeImpl and isStreamThisTypeImpl virtual methods
  to FormatReader

The latter changes are required to avoid overloading of virtual methods
in reader implementations.  Additionally, unlike the Java implementation,
many readers will not work via the stream interface since many readers
will be wrapping C libraries which can't use streams.  As a result, the
generic isThisType method will default to using a filename only when it
needs to open a file.  Reader implementations are free to implement
either of these methods if they can support them.
cpp: tiff: Add IFD makeCoreMetadata method

A free function to convert IFD field metadata to CoreMetadata.
cpp: FormatTools: Add imaging domains
cpp: bioformats: Add MinimalTIFFReader
cpp: bioformats: Add TIFFReader
cpp: test: Suppress gtest missing declarations' warnings
cpp: test: Wrap gtest header to suppress gtest warnings
cpp: tiff: Wrap additional tags
cpp: tiff: Add series metadata from tags
cpp: FormatReader: Correct docstring
cpp: FormatReader detail: Remove unneeded whitespace
cpp: MinimalTIFFReader: Remove unused includes
cpp: MinimalTIFFReader: Change update name and description

This is to distinguish it from the main TIFFReader.
cpp: TIFFReader: Remove unused includes
cpp: *TIFFReader: Check IFD validity in openBytes