C++: Add TIFF reader

- Add minimal TIFF reader
- Add TIFF reader (with ImageJ metadata support)
- FormatReader/Writer interface and documentation corrections
- Additional warning suppression

--------

The tests should all remain passing.  Tests have been added for the two readers, but at present they are quite rudimentary and are limited to checking the series count and that pixel data can be read.  They will require supplementing with integration tests using our test data, but if there is anything else worth adding to the unit tests, I'll be happy to do so.

The split here is MinimalTIFFReader and TIFFReader.  I could also add a BaseTIFFReader like Bio-Formats but I'm not sure on the exact reasons for the split, but I'm happy to restructure it if needed.  Would it be useful to rename MinimalTIFFReader to BaselineTIFFReader to better reflect what it is, since it's more like the Java MinimalTiffReader+BaseTiffReader?

There is likely missing functionality in the readers at this point.  I'm also happy to add any needing missing functionality.  It would be useful to know what's missing and of that, what's the highest priority to implement first.
The image size and the fact that the images *are in the same file* really does indicate that they belong together, and in the vast majority of cases is going to be what the user expects.  This is the assumption made by the Java reader, with ```SizeT``` representing the number of planes.

I fully realize that this isn't 100% ideal, but it does make the most common cases easier to work with (from a user's perspective) given our current model.  If you intend to change that assumption, be aware that we will no longer be able to easily compare behavior between the two languages' readers, and there will be substantial effort involved later on when dealing with other readers that rely on the TIFF reader.