Adding support of ppc64le architecture

Signed-off-by: William Grant <wgrant@ubuntu.com>
Signed-off-by: Michel Normand <normand@linux.vnet.ibm.com>
ENH: optimize array creation from homogenous python sequences

Instead calling PyArray_DTypeFromObjectHelper for each item in a
sequence, check if all items in the sequence are of the same scalar
type, if this is the case we only need to recurse on one item.
Also use the PySequence_Fast API to avoid expensive function calls for
the common case of lists or tuples.

np.array(range(10)) improves about 25%
np.array(range(100)) improves about 40%
ENH: use fast sequence API for setArrayFromSequence

reduces runtime of function by about 10%
ENH: use fast sequence API for discover_dimensions

reduces runtime of function by about 20%
Merge pull request #4567 from juliantaylor/obj-array-create-opt

ENH: optimize array creation from homogenous python sequences
ENH: release GIL for a[..., bool] type indexing

set _save to NULL in NPY_END_THREADS to simplify some code
Merge pull request #4570 from juliantaylor/index-gil

ENH: release GIL for a[..., bool] type indexing
BUG: Compare struct arrays with different endian.

Fixes two places where dtypes with fields are compared for *exact*
equality where they should be compared for *equivalency*.
Merge pull request #3664 from mdboom/structured_array_compare

structured arrays with different byteorders do not compare
ENH: Replace exponentiation with cumulative product in np.vander

Speeds calculation up by ~3x for 100x100 matrices, and by ~45x for
1000x1000
Merge pull request #4568 from jaimefrio/cumprod-vander.

ENH: Replace exponentiation with cumulative product in np.vander
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