gabor noise bug fix: it was using the wrong lerp!
The lerp it picked up from noiseimpl.h has a different argument order
than the one in OpenImageIO/fmath.h, and it's clearly the latter that was
intended. Oops. Unfortunately, this totally changes the pattern!
Add a couple operator* variants to clear up some type ambiguities
Dual2 minor fix of template magic
noise() speedups using SIMD vector instructions

Done: float- and triple-output Perlin noise on 2D & 3D, with and without
derivs, both signed and unsigned varieties, also the periodic versions.
The patterns are unchanged, they just speed up.

Not done:
* 1D domain (2D was already so much less speedup than 3D, didn't seem
  like 2D would have much gain).
* 4D domain (rarely used, more work, will come back to it)
* simplex, gabor, cell noises (will come back to these)

Timing results:

These are for Perlin signed noise, but the same code is used for periodic
and unsigned versions. Improvements are reported as percentage of original
time that it takes the new code to run. For example, 50% means the new SSE
code runs in half the time of the old code, i.e., 2x faster.

    Range Domain Derivs   New Time (as percent of old time)
     1D    2D             77%
     1D    2D      y      77%
     1D    3D             53%
     1D    3D      y      40%
     3D    2D             66%
     3D    2D      y      51%
     3D    3D             42%
     3D    3D      y      32%