ENH: Add the scipy NumpyVersion class.

The class is in numpy/lib/_version.py and can be used to compare
numpy versions when the version goes to double digits.
TST: reduce memory usage of fft test

tests should not use more than 500 MB of memory, this one uses more than
a GB. Also it didn't join its threads.
Merge pull request #4719 from juliantaylor/fft-test

TST: reduce memory usage of fft test
Merge pull request #4713 from charris/add-numpyversion

ENH: Add the scipy NumpyVersion class.
BUG: Fix seg fault converting empty string to object
Merge pull request #4722 from mtkni/master

BUG: Fix seg fault converting empty string to object
ENH: added functionality nanpercentile to numpy
Implemented a nanpercentile and associated tests
as an extension of np.percentile to complement the
other nanfunctions.
BUG: svd ufunc typo
Merge pull request #4735 from argriffing/fix-svd

BUG: svd ufunc typo
DOC: tweak gufunc API documentation, remove broken link.  Closes gh-4726.
Merge pull request #4738 from rgommers/gufuncs-doc

DOC: tweak gufunc API documentation, remove broken link.
Docs: fix numpy.fft.fft2 example

Fixes issue #4736

The example showed a call to np.fft.fft instead of np.fft.fft2.
Merge pull request #4739 from FRidh/docs

Docs: fix numpy.fft.fft2 example
ENH: speed-up minimum, maximum and xor for bool dtype
Replaced the operations for the above ufuncs on bools, by simpler
single instructions.

On random inputs `np.minimum` and `np.maximum` run about 25% faster,
and `np.logical_xor` and `np.bitwise_xor` almost 3x faster.
Merge pull request #4740 from jaimefrio/bool-ops

ENH: speed-up minimum, maximum and xor for bool dtype
Merge pull request #4734 from dfreese/feature/nanpercentile

ENH: added functionality nanpercentile to numpy
ENH: avoid expensive PyArg_ParseTuple in void operations

Replace simple "Oi|O" unpack with faster specialized unpacking

Improves e.g.:

    nrows, ncols = 365, 10000
    items = np.rec.fromarrays(randn(2,265, 10000), names=['widgets','gadgets'])
    row_idx, colidx = randint(0, nrows, ncols), np.arange(ncols)
    %timeit filtered_items = items[row_idx, col_idx]
    In [7]: %timeit filtered_items = items[row_idx, col_idx]
    1000 loops, best of 3: 1.55 ms per loop

to

    In [7]: %timeit filtered_items = items[row_idx, col_idx]
    1000 loops, best of 3: 706 µs per loop