ENH: speed up intp multiply overflow check

Avoid expensive division by checking against half size of the result first.
Speeds up PyArray_NewFromDescr by a factor of two according to perf.
Could still be further improved by making use of cpu overflow flags, e.g. via
clangs __builtin_mul_with_overflow or using gccs __int128 type.
ENH: reduce calls to npy_is_aligned in _IsAligned

one can just bitwise_or the memory and all strides and call npy_is_aligned on
that to get the same result.
TST: improve test speed

move slow test_memmap_roundtrip to slow tests
decrease excessively large array size used in np.sin(x) compuation
TestInterp.test_if_len_x_is_small, the code has no special path for this
large size differences.
STY: pep8 for npyio

Various pep8 fixes for npyio.py
Also reorganized the imports, and removed the unnecessary (I hope)
`_string_like = _is_string_like` statement.
MAINT: fix another wrong NULL check

silences cppcheck error, not a bug as the only caller checks the python
error.
Merge pull request #3838 from juliantaylor/null-fix

MAINT: fix another wrong NULL check
DOC: mention new comparison runtime warnings in release notes
DOC: move support for large files to features

its nothing you should need to worry about when porting to 1.8
DOC: update percentile release notes and add np.array improvement
DOC: minor rewording of partition note
BUG: Allos linalg.solve to handle zero equations.

This was previously correct, but the special case was missing
since the gufunc code cannot handle it.
Merge pull request #3841 from juliantaylor/rnotes-master

update 1.9 release notes and sync 1.8 notes with maintenance branch
Merge pull request #3848 from seberg/solve_0k

BUG: Allos linalg.solve to handle zero equations.
BUG: preserve ndarray subclasses in median

closes gh-3846
Merge pull request #3851 from juliantaylor/median-subclass

BUG: preserve ndarray subclasses in median
MAINT: accept NULL in NpyIter_Deallocate and remove redundant NULL checks

Deallocation should just do nothing if provided a NULL pointer nditer
deletion broke this convention.
Removed many redundant NULL checks for various deallocation functions
used in numpy, they all end up in standard C free or PyMem_Free which
are both NULL safe.
BUG: ensure percentile has same output structure as in 1.8

percentile returned scalars and lists of arrays in 1.8
adapt new percentile to return scalar and arrays with q dimension first
for compatibility.
DOC: make docstrings of matrix properties (.T, .H, .I, .A, .A1) work.

Closes gh-1939.
Merge pull request #3865 from rgommers/matrixprop-docs

DOC: make docstrings of matrix properties (.T, .H, .I, .A, .A1) work.
BUG: Refactor nanfunctions to behave as agreed on for 1.9.

    Deal with subclasses of ndarray, like pandas.Series and matrix.

        Subclasses may not define the new keyword keepdims or deal
        gracefully with ufuncs in all their forms. This is solved by
        throwing the problem onto the np.sum, np.any, etc. functions
        that have ugly hacks to deal with the problem.

    Settle handling of all-nan slices.

        nanmax, nanmin -- Raise warning, return NaN for slice.
        nanargmax, nanargmin -- Raise ValueError.
        nansum -- Return 0 for slice.
        nanmean, nanvar, nanstd -- Raise warning, return NaN for slice.

    Make NaN functions work for scalar arguments.

        This may seem silly, but it removes a check for special cases.

    Update tests

        Deal with new all-nan handling.
        Test with matrix class as example of subclass without keepdims.
        Test with scalar arguments.

    Fix nanvar issue reported in #3860.

    Closes #3860 #3850