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.
Fix loop index