ENH: disable OpenBLAS affinity settings

OpenBLAS starts as many threads as it can and assigns them to cpus
This includes the main thread Python is running in.
This means any threads or processes Python starts must all share this
cpu, nullifying any parallization efforts.
Luckily this behaviour can be disabled via an environment variable which
we need to set before loading dotblas which may be linked to OpenBLAS.
Libraries loading BLAS before numpy are stills screwed.
BLD: allow strings for check_func declarations

makes attribute checks more sane and allows adding nonnull
MAINT: annotate reference stealing and burrowed refs in multiarray

allows for better static analysis report with e.g. cpychecker
MAINT: add a few nonnull attributes to array creation functions

also fix wrong capi documentation of PyArray_NewFromDescr stating it
accepts NULL dtype while it does not.
DOC: fixed typo
DOC: standardize "size" argument description in docstrings for functions of random module

there were many different versions for no good reason
MAINT: always use tuples for api index values

simplifies the generation logic a bit
Update __init__.py

interpreter is misspelled
Merge pull request #4644 from crbates/patch-1

Update __init__.py
BUG: Hold GIL for types with fields, fixes #4642

Set the `NPY_NEEDS_PYAPI` flag for types with fields, as these need
access to the Python API to manipulate the tuples and dicts holding
field information. It remains unset for the base `np.void` type.
Merge pull request #4640 from gdementen/patch-1

DOC: fixed typo
MAINT: replace multiarray_global_vars_types by using tuples
Merge pull request #4637 from juliantaylor/api-annotate

annotate reference semantics of c-api
Merge pull request #4648 from jaimefrio/void-api

BUG: Hold GIL for types with fields, fix #4642
Merge pull request #4641 from gdementen/random_docstring_fixes

DOC: standardize "size" arg description in random module docstrings
BUG: Fix memory leak.

Patch is from Julian Taylor. Closes #4652.
Merge pull request #4654 from charris/fix-memory-leak-gh-4652

BUG: Fix memory leak.
ENH: replace GIL of random module with a per state lock

The random module currently relies on the GIL for the state
synchronization which hampers threading performance.
Instead add a lock to the RandomState object and take it for all
operations calling into randomkit while releasing the GIL.
This allows parallizing random number generation using multiple states
or asynchronous generation in a worker thread.

Note that with a large number of threads the standard mersenne twister
used may exhibit overlap if the number of parallel streams is large
compared to the size of the state space, though due to the limited
scalability of Python in regards to threads this is likely not a big
issue.
Merge pull request #4580 from juliantaylor/openblas-affinity

ENH: disable OpenBLAS affinity settings
ENH: added functionality nanmedian to numpy

Implemented a nanmedian and associated tests as an
extension of np.median to complement the other
nanfunctions

Added negative values to the unit tests

Cleaned up documentation of nanmedian