oiiotool -native forces native data format read.

Normally, all image reads into an ImageBuf will be performed via an underlying ImageCache. But since an ImageCache does not support all possible data formats, some lesser-used formats may be auto-converted upon being read into the cache, and therefore lose precision or range compared to what the equivalent ImageInput::read_image() is capable of. (An example would be a rare file of uint32 or double pixels, which would lose data when read into an ImageCache whose ``biggest'' data type is float.)

In this patch, IB::read is changed so that if you request a 'conversion' that would lose precision by going through the cache, it will bypass the ImageCache and instead do an immediate read of the file that preserves its native format (if it's not a format that can use the ImageCache without a loss of precision).

The oiiotool --native option then triggers this behavior, and should be used for the small set of cases where the default behavior is problematic in practice.