WIP/ENH: add Stockwell transform to time_frequency

[Why you should use the S transform](https://bytebucket.org/cleemesser/stockwelltransform/raw/d87ff20d787d36d5280dcd26cbaf309dcd982bf4/ref/Stockwell-Why%20Use%20the%20S-Transform.pdf)

If you're too lazy to read:

- like a wavelet
- but uses Gaussian windows that absolutetly referenced (to the time window)
- frequency independent amplitude response
- this means you don't have to manually tinker with n cycles etc.
- hence allows for automated TFR analysis
- resolution can be improved using multitaper

This code without MT:
![stockwell_python](https://cloud.githubusercontent.com/assets/1908618/2753433/2cce52c0-c934-11e3-8dfb-746e8f08777f.png)

Original C code:
![tfr_compare_morlet_cwt_strans](https://cloud.githubusercontent.com/assets/1908618/2753440/44574a46-c934-11e3-9663-4c51b00f5594.png)

Original C code + MT:
![tfr_compare_morlet_cwt_stockwell_mt](https://cloud.githubusercontent.com/assets/1908618/2753429/163d93ea-c934-11e3-9ee2-b83d40a55ba4.png)


Todo:

- improve API
- add mulitaper support
- improve speed (is reasonable, but C is still significantly faster)
Did that already. Unit tests based on maths, i.e. signal inversion matter more, they're implemented and pass

> On 20 Nov 2014, at 01:33, Eric Larson <notifications@github.com> wrote:
> 
> In mne/time_frequency/tests/test_stockwell.py:
> 
> > +    assert_equals(st_max_freq, pulse_freq)
> > +    assert_true(175 < st_pulse.max(axis=0).argmax(axis=0) < 275)  # max time
> > +
> > +    # test inversion to FFT, by averaging local spectra, see eq. 5 in
> > +    # Moukadem, A., Bouguila, Z., Ould Abdeslam, D. and Alain Dieterlen.
> > +    # "Stockwell transform optimization applied on the detection of split in
> > +    # heart sounds."
> > +
> > +    width = 1.0
> > +    start_f, stop_f = 0, len(pulse)
> > +    st_precomputed = _precompute_st_windows(1000, start_f, stop_f, sfreq, width)
> > +    y = _st(pulse, *st_precomputed)
> > +    # invert stockwell
> > +    y_inv = fftpack.ifft(np.sum(y, axis=1)).real
> > +
> > +    assert_array_almost_equal(pulse, y_inv)
> Can you run a noise sample in MATLAB and Python, encode the MATLAB result in a binary, and test against it? It would be a nice validation. If it needs to be in the test repo I can add it.
> 
> —
> Reply to this email directly or view it on GitHub.
>