TimeSeries: new fft method, use decorated import

    - re-built TimeSeries.fft() to allow average FFT calculation (Welch only)
    - updated many methods to use @with_import decorator for optional dependencies
TimeSeries.average_fft: renamed method (again)

    - as before, TimeSeries.fft computes a single FFT, but now the normalisation is correct
    - TimeSeries.average_fft computes a Welch-like mean average of overlapping FFTs
plotter.Axes: override legend

    - override matplotlib.axes.Axes.legend to give better linewidth
BodePlot: can now plot transfer function spectra
docs/plotter: add BodePlot
gw_ex_plot_transfer_function: new example
docs: improved literalinclude and source links
docs/examples: improved all examples

    - added new example for transfer functions