Inplace Fast Fourier Transform

Changes FFT implementation slightly to make it first class vector expression.

### Current state of FFT:

1. FFT is additive transform taking any vector expression
2. When called, FFT takes both input and output; copies result of input expression to its internal input buffer, transforms it to internal output buffer, then scales and possibly truncates the result, and copies (or appends) it to user output vector.

### The proposed changes:
1. FFT is first class vector expression.
2. When called, FFT takes input expression only, copies its result to internal input buffer, transforms it to internal output buffer, and returns expression (output * scale). The returned expression then participates in the enclosing (parent) expression.

So that this becomes possible:
```
x = sqrt( fft(y) );
x = fft( 2 * ifft(y) );
```
etc.


@neapel, what do you think of this?