Added the ability to interpolate in the frequency domain to Trace.resample(). Should fix issue #857

Ok, so now here's the promised pull request. The new code uses the numpy.interp() function to interpolate the spectra in the frequency domain. I guess that's roughly what you were suggesting, Lion, right?

A few (in fact two) more thoughts:
1) I'm not sure to what extent the strict_length option makes sense. The endtime of a trace may also change if len(self.data) % factor == 0.0 holds, since the endtime is calculated based on (npts - 1)*delta. 
2) I've seen that in the current master branch there's a new signal.interpolation module, which also contains a weighted_average_slopes() function, of which I'm assuming that it does something similar to SAC's "interpolate" command. Maybe this would in general be the better solution for resample(), since this windowing + filtering business seems a little messy to me. On the other hand the "weighted average slopes" method might be messy too, so not sure...
Hmm..weird design choice but I guess there is a reason for that. In any case, some speed measurements:

```python
In [5]: data = np.random.random(100000)

In [36]: %timeit np.fft.ifft(np.fft.fft(data))
100 loops, best of 3: 5.66 ms per loop

In [37]: %timeit np.fft.irfft(np.fft.rfft(data))
100 loops, best of 3: 3.07 ms per loop

In [17]: %timeit scipy.fftpack.ifft(scipy.fftpack.fft(data))
100 loops, best of 3: 3.47 ms per loop

In [18]: %timeit scipy.fftpack.irfft(scipy.fftpack.rfft(data))
1000 loops, best of 3: 1.84 ms per loop
```

By far the fastest are `scipy.fftpack.rfft`/`scipy.fftpack.irfft`. So I guess those should be used. The weird return array can just be interpreted as a complex array and then it works as expected:

```
In [33]: scipy.fftpack.fft(data)[1:][:5]
Out[33]:
array([ 28.14911696+39.75382337j, -99.37148236+55.70932422j,
         2.97645413+84.97741503j, -22.92649492+26.59388824j,
       -14.82421958-24.74630707j])

In [34]: scipy.fftpack.rfft(data)[1:-1].view(np.complex128)[:5]
Out[34]:
array([ 28.14911696+39.75382337j, -99.37148236+55.70932422j,
         2.97645413+84.97741503j, -22.92649492+26.59388824j,
       -14.82421958-24.74630707j])
```