Code clean up. Graft constructor added. SmoothDownsample function

Removed 3D fourier transform. In most cases it makes more sense to do
fourier transforms 1 dimension at a time. Less memory and processing.

Added a constructor for MRImage and NDArray which takes a pointer and
deleter function. So now outside memory can be grafted in. Might be
useful for image reader.

More work on smoothDownsample function.
NDArray graft and more work on smoothDownsample