Adding support of ppc64le architecture

Signed-off-by: William Grant <wgrant@ubuntu.com>
Signed-off-by: Michel Normand <normand@linux.vnet.ibm.com>
ENH: intern the constant python strings

Was always intended this way but not done due to a mistake in Python3
fix. Speeds up dictionary lookups a bit as string comparisons can be
skipped on hash collisions.
ENH: avoid searching for __numpy_ufunc__ if its a basic python type

Checking for the attribute is a very large bottlenecks for reductions.
dtype, out, keepdims will often be basic python types so the check can
be skipped.
Also add a couple missing types to helper function _is_basic_python_type
and move it into a header so it can be used in umath.
BUG: Masked arrays and apply_over_axes

Masked arrays version of apply_over_axes did not apply
function correctly to arrays with non-trivial masks.

Fixes #4461.
BUG: fix memory leaks and missing NULL checks

found by cpychecker gcc plugin
Merge pull request #4578 from juliantaylor/static-bugs

BUG: fix memory leaks and missing NULL checks
Merge pull request #4255 from juliantaylor/ufunc-attr-check

__numpy_ufunc__ check improvement
Merge pull request #4463 from abalkin/issue-4461

BUG: Masked arrays and apply_over_axes
ENH: Ensure that repr and str work for MaskedArray non-ndarray bases

For repr, use the name of the base class in output as "masked_<name>"
(with name=array for ndarray to match the previous implementation).
For str, insert masked_print_option in an ndarray view of the object
array that is created for string output, to avoid calling __setitem__
in the base class.  Add tests to ensure this works.
Merge pull request #4576 from mhvk/ma/subclass-printing

ENH: Ensure that repr and str work for MaskedArray non-ndarray bases
BUG: Ensure MaskedArray.flat can access single items
BUG: Explicitly reject nan values for p in binomial(n, p). Fixes #4571.

Adds check with np.isnan(p) and raises ValueError if check is positive.
Merge pull request #4587 from ddasilva/meltingwax/4571

BUG: Explicitly reject nan values for p in binomial(n, p).
BLD: remove cython c source from git

Instead generate at build time. The generated sources are still part of
the sdist.
tools/cythonize.py is copied from SciPy with small changes to the
configuration.
ENH: Better error w/ line num for bad column count in np.loadtxt()

Resolves #2591. Adds more explicit error handling in line parsing loop.
Merge pull request #4588 from ddasilva/ddasilva/2591

ENH: Better error w/ line num for bad column count in np.loadtxt()
BUG: Prevent division by zero. Closes #650.
Merge pull request #4591 from szpy/bugfixes

BUG: Prevent division by zero. Closes #650.
ENH: add a 'return_counts=' keyword argument to `np.unique`

This PR adds a new keyword argument to `np.unique` that returns the
number of times each unique item comes up in the array. This allows
replacing a typical numpy construct:

    unq, _ = np.unique(a, return_inverse=True)
    unq_counts = np.bincount(_)

with a single line of code:

    unq, unq_counts = np.unique(a, return_counts=True)

As a plus, it runs faster, because it does not need the extra
operations required to produce `unique_inverse`.
BUG: ifort has issues with optimization flag /O2

Fixes scipy test failures.