utils: re-write reflect to be non-iterative

dtcwt.utils.reflect uses an iterative method to clip the input within
the bounds specified. This in effect makes the runtime proportional to
the magnitude of the input which is an unexpected performance
characteristic.

Taking the implementation from OpenCL, rewrite reflect() to use a
non-iterative, if far more opaque, method.
Merge pull request #43 from rjw57/refactor-reflect

utils: re-write reflect to be non-iterative