cpp: IFD: Rename libtiff field wrapping methods to getRawField and setRawField

This avoids confusion with the getField<> method which returns a Field<>
object, and prevents any percieved ambiguity with overloading since while
it works, any errors can be confusing since it's not necessarily clear
which method is being called.
cpp: IFD: Allow getting of a const Field object

This allows read-only Field access within const contexts, e.g.
from a const IFD reference or in a const IFD method.
cpp: tiff: Add Sentry error fallback

Allow provision of useful messages for the cases where libtiff
doesn't provide a useful error message.
cpp: IFD: Add getters and setters for PixelType

These are convienience functions which map SampleFormat and
BitsPerSample to and from the PixelType enum.
cpp: IFD: Add skeleton implementation for image reading and writing
cpp: tiff: Storage ordering is based on TIFF PlanarConfig
Merge pull request #1343 from rleigh-dundee/cpp-tiff-pixeldata

C++: TIFF pixel data read/write interfaces and skeleton implementation