ENH: use intrinsics for isnan, isfinite and isinf

Use of intrinsics avoids expensive function calls in tight loops on x86
cpus where these operations are implemented in hardware while still
retaining same portability.
More than doubles performance of np.isnan/isinf/isfinite.
MAINT: check for intrinsics at configure time
ENH: add possibility to add define_macros to extensions
MAINT: mask npy_config.h include with HAVE_NPY_CONFIG_H
MAINT: document intrinsic macro guards
MAINT: document why OPTIONAL_INTRINSICS needs arguments
Merge pull request #3335 from ContinuumIO/outer_steps_fix

Fix segfault on OS X 64 bit
Merge pull request #462 from ContinuumIO/ufunc-struct

Create ufunc for struct array
Merge pull request #3308 from juliantaylor/optimize-isnan

ENH: use intrinsics for isnan, isfinite and isinf
ENH: optimize byteswapping via intrinsics

Byteswapping is implemented in hardware on x86 cpus which is more than
double as fast than the existing implementation.
The masked version used for 32bit plays better with compiler pattern
matching so it can be optimized also by non-gcc/clang compilers.
DOC: Mention all min/max functions from all others, clarify differences
DOC: Harmonize max and min docstrings with each other
Merge pull request #3309 from juliantaylor/optimize-byteswap

ENH: optimize byteswapping via intrinsics
BUG: Correctly pass on ddof paramter on inside np.ma.corrcoef

While ddof has basically no effect on corrcoef, it exists,
but it was not passed on correctly (instead only bias would
be passed on). Fixes gh-3336
Merge pull request #3337 from seberg/issue-3336

BUG: Correctly pass on ddof paramter on inside np.ma.corrcoef
DOC: update numpy.distutils documentation, remove info.py details.

Addresses https://github.com/scipy/scipy/issues/2492
Merge pull request #3340 from rgommers/distutils-doc

DOC: update numpy.distutils documentation, remove info.py details.
ENH: improved, faster algorithm for array padding

New padding method which scales much better with dimensionality.
This new implementation is fully vectorized, builds each abstracted
n-dimensional padding block in a single step, and takes advantage
of separability. The API is completely preserved, and the old
algorithm is used if a vector function is input for `mode`.

The new algorithm is faster for all tested combinations of inputs,
and scales much better with dimensionality. Execution time reductions
from ~25% for small rank 1 arrays to >99% for rank 4+ arrays observed.
Merge pull request #3329 from JDWarner/faster_arraypad

ENH: improved, faster algorithm for array padding
BLD: fix setuptools-specific easy_install issue.  Closes gh-3160.

An error is raised by setuptools when trying to write to /dev/null.  Was fixed
in distribute, but not in setuptools.

No multi-arch support with plain setuptools should be OK, because multi-arch is
Ubuntu specific (at least for now), and they ship distribute.