ENH: signal: spectral: Add periodogram and welch functions
BUG: signal: spectral: fix various bugs in periodogram and welch.

1. various off by 1 issues in dealing with the output of fftpack.rfft.
2. the DC and nfft/2 points shouldn't be scaled by 2 for 'onesided'
3. error in computing frequency axis in 'onesided'

The output of welch exactly matches matplotlib.mlab.psd for both even
and odd length  one-sided spectra and even length two-sided spectra of
real data.  For odd length two-sided spectra of real data, welch matches
the spectrum but matplotlib.mlab.psd return an incorrect frequcny axis.
BUG: signal: spectral: Fix bug introduced in last commit

We want fftbins=True in signal.get_window.  matplotlib.mlab.psd
effectively uses fftbin=False since this option doesn't exist in numpy.
Swapped this in to do some testing.
ENH: signal: spectral: Support detrending in welch.
MAINT: signal:  update binary attrib on _spectral.c

This marking was lost when the file was renamed.
BUG: signal: welch: call detrend instead of doing it by hand.

To support detending via a polynomial, we could extend detrend.
TST: signal: add test for welch

Also, fix bug in welch.
TST: signal: add tests for periodogram
BUG: signal: spectral: address review comments
FIX: signal: spectral: implement periodogram in terms of welch

Also finish addressing comments.
STY: signal: spectal: 80 character lines.
BUG: update py3tool for spectral.so rename
BUG: fix py3k issue in signal.spectral
MAINT: signal.spectral: fix integer division and some formatting stuff.
BUG: signal: spectral: various bugs and missing tests

periodogram chokes if passed a list
    --> added call to np.asarray
periodogram throws an unhelpful division by zero error if passed an empty array
    --> added check and quick return if x.shape == (0,)
    --> added test_empty_input
periodogram needs test for nfft < x.shape[axis]
    --> added test_short_nfft
periodogram needs test for nfft == x.shape[axis]
    --> added test_nfft_is_xshape
welch gives big output when passing an empty array
    --> added check and quick return with empty arrays if x.shape == (0,)
    --> added test_empty_input
welch's output is unexpected if x.shape[axis] < nperseg
    --> check and warn that nperseg > x.shape[axis], but use nperseg == x.shape[axis]
    --> added test_short_data
welch has similar issue if using custom window and short data
    --> added a check that raises if window longer than data
    --> added test_long_window
BUG: signal: welch: add check for invalid noverlap

Also add test for invalid noverlap, and test for nondefault noverlap.
MAINT: in periodogram/welch, improve empty array handling and test warnings.

Also add a few more tests for complete test coverage.
Merge pull request #373 from ewmoore/spectral

ENH: signal: spectral: Add periodogram and welch functions