ustring: add comparisons between ustrings versus char* and string_view.
This fixes some potential ambiguities in method selection.
Replace stray usage of boost::filesystem::last_write_time with OIIO::Filesystem
OpenEXR 2.2 support, esp. for the new DWAA/DWAB compression modes.
Median filter: IBA::median_filter and oiiotool --median.

Median filters can be good for removing high-frequency outlier value
noise, but without also blurring edges like a blurring filter would do.

Also, IBA::unsharp_mask and oiiotool --unsharp, if you say "median" for
the kernel, will use a median filter rather than the gaussian blur for
the smoothing step of the unsharp mask. This tends to have the effect of
sharpening small details, while not over-sharpening long edges as the
traditional unsharp mask sometimes does.
string_view-ize ImageBufAlgo
Fully string_view-ize ImageBuf
iinfo/oiiotool -v: don't spew endlessly for subframe resolutions on movies
Tell gcc/clang to ignore the fact that math functions can set errno (helps codegen of sqrtf in particular)
Build scripts minor reformatting and better help messages.
* Rearrange Makefile wrapper so that 'make help' is much more readable.
* Some minor reformatting and movement to make it align to similar constructs
  in the OSL Makefile and CMakeLists.txt (makes it easier to diff and port
  improvements in the build system from one project to another).
testtex enhancements: --nchannels, --derivs

--nchannels lets you force the number of channels to look up (it used to
automatically use the number of channels in the map, and this is still
the default). The purpose is to be able to test when the number of channels
in the lookup differs from the number in the map.

--derivs makes the variety of texture call that looks up derivatives of the
texture as well, and outputs them as two additional images (one for ds,
one for dt). This lets us test that the derivatives are calculated correctly.
CHANGES
OIIO_RESTRICT macro for restricted pointers.

Use on function declarations like this:

    void add1 (float* OIIO_RESTRICT A, const float* OIIO_RESTRICT B)
    {
        A[0] = B[0] + 1.0f;
        A[1] = B[1] + 1.0f;
    }

This means "A and B will never point to the same memory in a way that
could create a data dependency". Without this, it could be that B[1] is
the same memory as A[0], which means that the first line MUST execute
prior to the second in order to be correct, whereas if it knew A and B
would point to distinct memory (or at least would never interfere), the
compiler could be more creative with optimizations because those lines
could be rearranged or run in parallel.

Use with extreme caution!
Basic SIMD support in the form of float4, int4, and mask4 classes
that take advantage of SSE if available.

This is a first stab at it, and will be augmented in the future
with additional functionality, additional architectures (AVX and Neon
come to mind), etc. But this is enough to get started.
make/CMake support for SIMD building modes (e.g. 'make USE_SIMD=sse4.1')
ImageBuf and ImageCache: pad buffers by an extra SIMD width so that SIMD
reads don't overstep the allocation sizes.
SIMD instruction speedups for texture lookups

This is a big overhaul of the internals of TextureSystem to make as much
as possible use SSE (and in future updates, other SIMD instruction
sets).  We're seeing 30-60% reduction in time of the texture lookups
themselves, depending on the SSE compatibility level, number of channels
looked up, whether texture derivatives are requested, etc.  Call it
close to a 2x speedup in general. But of course, how much this will
translate into speedup of an app using TextureSystem will depend a lot
on the original percentage of the runtime of the app that was spent
doing the texture math.

This is a first stab, there is more to return to in the future. For
example, we have only SSE-optimized texture(), but really not
texture3d() or environment(). There's probably even more we can squeeze
out of texture() if we try.
Overhaul TextureSystem API -- eliminate nchannels and deriv fields from
TextureOpt, in favor of passing them explicitly to the various texture
API functions. This is all in support of the SIMD internals changes.
Enhance handling > 4 chans by saving and restoring options.firstchannel.
Bump SPI minimal SSE level to 4.1 on spinux, 4.2 on OSX
Bump version with SIMD