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.