BUG: Error checks for the dtype shape.

Also creates a clean tuple for the shape tuple, instead of
passing potentially mutable objects through.

Closes gh-4009
BUG: set the needs_api variable in np.where
Merge pull request #4207 from juliantaylor/where-api

BUG: set the needs_api variable in np.where
BUG: testing.run_module_suite() didn't pass on KnownFailure.

This results in errors whenever you run tests using KnownFailure
like so: ``python test_mymodule.py`` (where run_module_suite is
used in the file, like numpy and scipy do).
Merge pull request #4211 from rgommers/fix-knownfail

BUG: testing.run_module_suite() didn't pass on KnownFailure plugin.
MAINT: remove unused simple_capsule_dtor() from npy_3kcompat.h

This removes a lot of build warnings when including this file.
MAINT: remove unused variables from einsum.c.src and loops.c.src

Fixes some build warnings.
MAINT: fix build warnings for umath_linalg

The removal of CFLOAT for eig/eigvals is related to a bug, see c355550dd80.
Can be put back once that issue is fixed.
MAINT: fix build warnings in test_rational.c.src
MAINT: silence some build warnings due to missing NO_IMPORT_ARRAY
ENH: reduce overhead of probs check of choice

Use kahan_sum as multinomial does.
Closes gh-4188
MAINT: regenerate with cython 0.20 and fix a warning it emits

Fixed warning is "Non-trivial type declarators in shared declaration".
Merge pull request #4212 from rgommers/buildwarnings

Fix some build warnings
BUG: properly handle references of objects in new np.where

Objects must go over the objects copyswap function and GIL must be taken
before dereferences for correct reference counting.
DOC: add versionadded:: 1.8.0 to ufunc.at docstring
MAINT: fix some f2py related build warnings.
Merge pull request #4221 from rgommers/fix-f2py-warning

MAINT: fix some f2py related build warnings.
Merge pull request #4220 from juliantaylor/ufunc-at-ver

DOC: add versionadded:: 1.8.0 to ufunc.at docstring
Merge pull request #4213 from juliantaylor/choice-improv

improve random.choice performance and regen with cython 0.20
BUG: min_scalar_type_num: special float values can be represented in half

E.g. pandas sometime uses float('NaN') which would otherwise convert to
float64 where not required. The new np.where which uses
PyArray_ResultType is a case where the conversion is unnecessary.