FFT benchmark improvements

This PR cleans up the FFT to give benchmark numbers with fewer caveats:

- The complex case was actually real data, and Halide was doing some constant folding with the imaginary part. This is now fixed.
- The real transforms no longer use a transposed transform domain.
- The benchmark assumes the input and output is cached (again). I am pretty sure this matches the behavior of FFTW's benchmark.

There are also a few small optimizations and cleanups.