Restore old-fashioned unsafe format as "format_raw", for those rare
times when you must have every last feature of printf, including those
that tinyformat doesn't handle (and are willing to trade type safety and
expandability to do it).

What do you know, we need this for Strutil::memformat and Strutil::timeintervalformat!

Which we didn't notice because we had no unit tests for them, which I also have
now added.
Fix roundoff error that was causing test failures and other weird results.
In IBA::resize, use divide rather than multiply-by-inverse to improve precision for filter normalization.
There are numbers for which x*(1.0f/x) != 1.0, wowee, and that throws off our filtering,
for example we can filter a flat 1.0 image and get result values that aren't exactly 1.0.
Implement variable width and precision arguments in tinyformat

Format specs starting with "%*.*" indicate a variable field width and
precision which come in order in the format string with the actual value
to be formatted coming after.

This change implements support for variable width & precision to enhance
printf() compatibility.  Various internals have been changed, most
notably introducing a FormatIterator class to keep track of the state of
the format string and any variable width/precision arguments inserted.

The interface remains mostly unchanged, though the function
formatValueBasic - which could theoretically be overridden by users -
has been removed.  In hindsight this was just rather complex, and it's
not clear it was necessary since users can override formatValue with
roughly the same results.
oiiotool --stats : print MIP messages correctly, it was only printing for the first MIP level
Field3D build and minor implementation fixes
* Add FIELD3D_HOME build variable to allow explicit path to Field3D implementaiton
* Early out when "opening" a f3d file that doesn't exist (prevents the Field3D library
from spewing error messages to the terminal.
* Properly catch exceptions thrown by Field3D open.
oiiotool and iinfo: print info properly about non-byte bit depths.  That is,
say "uint12" for a file that's presented through the interface as UINT16 but
contains a "oiio:BitsPerSample" metadata of 12.
iinfo bug fix: make --stats print correctly. Fixes issue #345.
bmp bug fix -- wasn't setting oiio:BitsPerSample correctly.
oiiotool: only infer output tile size and data format for freshly-read files.
OpenEXR: suppress format-specific metadata from other formats.
Remove uses of the deprecated Filesystem:file_extension, and extend the preferred extension() to handle the missing functionality.
Fix DPX writer problem: wasn't looking for packing method in the right attribute name
DPX bug workaround: force 12 bit dpx to use 'packed' data to work around 12 bit fill bug in libDPX.
oiiotool/iconvert: Make sure stray "oiio:BitsPerSample" in the input doesn't mess up -d flag.
For example, "-d uint16" should really write a 16 bit file, not 12 bit just because
the original input had "oiio:BitsPerSample" set to 12.
Ported changes made to DPX BaseTypeConverter to Cineon (10 bits -> 16
bits promotion).
oiiotool --pattern constant
Beef up oiiotool docs and testsuite
Rebuild PDF docs
field3d: implement valid_file, conform metadata names to field3d conventions
including making a unique "oiio:subimagename" for each layer so that
texture3d will be able to address subimages by name.