Added 2D Fourier transformation as num.fft2 and num.fft2_inv.

Hey Francesco,

I needed some 2D Fourier transformation in my work so I implemented a version. It differs a bit from the 1D calculation, namely I am not using the `half complex vectors` but I am working with complex numbers from the beginning. The function does 1D transformation for 1 dimension and then 1D transformation for the other dimension. The result is a complex matrix. The result should be comparably fast and probably faster than implementing it on top of `fft` and `fft_inv`.
I have added the tests and the docs.
Also I have cross tested the results with numpy just to make sure to have it all right. Numpy also has the 3D Fourier transformation in stock and I will also implement that for my work, following in a later commit.

Cheers,
Ben