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