bug fix: throw error if fft is passed repeated dimensions

For example, `fft(X, (1,1))` currently segfaults.  The patch throws an error if a given transform dimension is listed more than once in the list of dimensions to transform.

(The patch also adds an additional `execute` internal convenience function for use in an upcoming package.)