Fast fourier transform

Adds an implementation of http://rosettacode.org/wiki/Fast_Fourier_transform.
@aochagavia yes, I would merge this as is (bar any other comments you may have on the rest of the code) and get back to it later. As you say this could benefit from future language changes, plus I'm not sure the iterator route is even viable with the current recursive implementation of fft.