More cleanup of `general_` functions
This extracts as much of the common logic from the nd-transforms as possible into generic functions. With the transform-specific logic handled by the exec functor. I've also tried to abstract all of the data movement and vector-type reordering into overloads of the various copy_ functions.
This does currently keep r2c and c2r as their own special cases since they are subtly different in a few ways.
Edited by Peter Bell