Reworked fft to get much better speed

I hadn't fully realised the power of reshaping an array to more
dimensions and then applying the FFT to the right two of them.