ENH: use dot (BLAS!) in linalg.norm
MAINT: dotblas: factor out all gemm and gemv calls
ENH: ma.asarray() and ma.asanyarray() will pass through input of the correct type.

If x is of type MaskedArray for ma.asarray(x) or any subtype of
MaskedArray for ma.asanyarray(x), these functions will simply return x.
This makes them consistent with their numpy counterparts.

Closes gh-4043.
BUG: Fixed mask_rowcols().

Previous implementation relied on ma.asarray() to always create
a new object.

See gh-4043.
MAINT: make NPY_CPU_HAVE_UNALIGNED_ACCESS a numeric macro

allows using it in if statements like for count_nonzero
also fix a compiler warning by casting
Merge pull request #4057 from juliantaylor/unaligned-macro

MAINT: make NPY_CPU_HAVE_UNALIGNED_ACCESS a numeric macro
ENH: improve add_newdocs performance

replace slow exec with a direct __import__.
improves `import numpy` speed by about 10%.
Merge pull request #3980 from larsmans/refactor-gemm-gemv

MAINT: dotblas: factor out all gemm and gemv calls
DOC: Improved doc for boolean array indexing
Merge pull request #4064 from juliantaylor/import-speed

ENH: improve add_newdocs performance
BUG/ENH: blasdot: make *dot calls 64-bit safe

BLAS uses int for all its size types, so the size is going to be
silently truncated on platforms where sizeof npy_intp > sizeof int,
i.e. on modern 64-bit platforms. In this case, we do a dot product
in reasonably-sized chunks and add the result ourselves.

On platforms where sizeof(int) == sizeof(npy_intp), i.e. typical
32-bit platforms, it's up to the compiler to optimize the loop away.

Also tried to make the code more readable, replaced int by npy_intp
in a few places and removed useless register declarations (modern
compilers ignore those).
ENH: dotblas: re-route all cblas_?dot calls to chunked versions

Also factored out and simplified NumPy->BLAS stride conversion.
ENH: Use nditer in numpy.save to stream bytes to custom file objects
TST: Increase test coverage of numpy.save/load roundtrips
Merge pull request #4077 from ogrisel/streaming-numpy-save

Streaming numpy.save to arbitrary file objects
ENH: intern some commonly used strings in umath module

Allows using the PyObject dictionary functions instead of the costly
C-string variants.

Make use of this in some of the ufunc subtype wrapper functions.

Improvement:

    a, b = np.arange(200.), np.arange(200.)
    %timeit np.add(a, b, out=a)
    1000000 loops, best of 3: 768 ns per loop

vs before:

    %timeit np.add(a, b, out=a)
    1000000 loops, best of 3: 1.03 µs per loop
ENH: skip redundant checking of subok keyword in _find_array_prepare

all currently existing callers only call this function if subok has
already been checked to be true, but keep the code to make clear it has
to be checked.
DOC: further improvements for boolean array indexing doc
ENH: implement pairwise summation

pairwise summation has an average error of O(log(n)) instead of O(n) of
the regular summation.
It is implemented as summing pairs of small blocks of regulary summed
values in order to archive the same performance as the old sum.

An example of data which profits greatly is
d = np.ones(500000)
(d / 10.).sum() - d.size / 10.

An alternative to pairwise summation is kahan summation but in order to
have a low performance penalty one must unroll and vectorize it,
while pairwise summation has the same speed without any vectorization.
The better error bound of O(1) is negligible in many cases.
ENH: umath: simplify pairwise sum

Simple recursive implementation with unrolled base case. Also fixed
signed/unsigned issues by making all indices signed.

Added a unit test based on @juliantaylor's example.

Performance seems unchanged: still about a third faster than before.