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 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: bioformats: Add MinimalTIFFReader
cpp: bioformats: Add TIFFReader
cpp: FormatWriter detail: Add checkPlane method
cpp: bin: Add showinf