Adding support of ppc64le architecture

Signed-off-by: William Grant <wgrant@ubuntu.com>
Signed-off-by: Michel Normand <normand@linux.vnet.ibm.com>
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: 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`.
Merge pull request #4589 from juliantaylor/cython-gen

BLD: remove cython c source from git
Merge pull request #4180 from jaimefrio/unique_counts

ENH: add a 'return_counts=' keyword argument to `np.unique`
Merge pull request #4551 from michelmno/master

ENH: adding ppc64le architecture support
ENH: add small memory chunk cache

Add very simplistic caching of small memory blocks (< 1024 bytes)
This improves the performance of small array operations by about 15%-20%:

without cache:
In [1]: d = np.array([1,1])
In [2]: %timeit d*d*d*d
1000000 loops, best of 3: 2.1 µs per loop

with cache:
In [1]: d = np.array([1,1])
In [2]: %timeit d*d*d*d
1000000 loops, best of 3: 1.7 µs per loop

The cache is a simple list of buckets of pointers, one for each size up
to 1023 bytes.
Two caches are required one for array data one one for
dimensinos/strides as they use different allocators.
All pointers can still be deleted with their matching deallocator but
this implies the size of the block must be known at the time of the free
in order to place the pointer in the right bucket. This should not be an
issue for well behaved numpy users.

Technically the ABI is broken in this change as the size of the
dimension memory block has been decreased from 3 * nd to 2 * nd, the
increase to 3 was a relic from the NA branch and is not needed anymore.
It should be unlikely someone relies on this size.