C++ TIFF tiling support

- Add a PlaneRegion class for simple rectangular area intersections
- Add a TileInfo class which can be used to compute tile positions for a given IFD as well as tile lists for region coverage and sub-tile coverage of tile-region overlaps
- Includes a small 64x64 test PNG image which is processed using graphicsmagick (if available) to generate TIFF images for testing, with different variants of tile/strip organisation to ensure that the calculations are correct.  Note that imagemagick has broken strip writing so graphicsmagick was used as an alternative.  If graphicsmagick is not available then the specific testcases won't be generated and used.  The image is patterned so that any strip/tile errors will be immediately obvious.

The above changes should do all the necessary calculations to allow correct transfer of pixel data between a TIFF image and PixelBuffer using minimum set of strips/tiles.

--------

Testing: Should be handled by the test cases added in this PR, so all the jobs should remain green.
indent