ENH: improve VOID_compare performance

use small memory cache for the temporary data allocation in the compare
loop and use npy_is_aligned instead of the very expensive signed
division.

Improves unaligned compares which occur in structured arrays with
strings:

d = np.ones((2,10000), dtype=np.dtype([('f0', 'S5'), ('f1', '<i4')]))
%timeit np.argsort(d)
100 loops, best of 3: 8.6 ms per loop

vs before:
100 loops, best of 3: 23.7 ms per loop
STY: Use `.astype`'s `copy` kwarg in `np.tri`

Replace an explicit type check with setting `copy=False` in call to `astype`.
Merge pull request #4750 from jaimefrio/tri-sty

STY: Use `.astype`'s `copy` kwarg in `np.tri`
BUG: nanpercentile/nanmedian 0-d with output given.

Also some PEP-8 fixes and test improvements
Merge pull request #4749 from seberg/0d-nanperc-out

BUG: nanpercentile 0-d with output given.
Merge pull request #4746 from juliantaylor/void-compare-opt

ENH: improve VOID_compare performance
DOC: Rework the advanced indexing documentation.

Mostly makes the advanced indexing doc much more example based,
and prominently mentions the np.ix_ function.
Some subtleties (some of which are new) are also mentioned.
Merge pull request #4076 from seberg/advanced-indexing-doc

DOC: Rework the advanced indexing documentation.