when initialize a vectorize object, always set self._ufunc to None first. fix #3285
MAINT: add NPY_BEGIN_THREAD_NDITER and remove unnecessary needs_api checks

the thread variable is initialized to NULL and checked by the end macro
so the needs_api check is redundant.
ENH: release gil for nonzero
ENH: release gil for np.take and np.arange

implies adapting check_and_adjust_index to allow threadsafe error
reporting.
ENH: release gil for np.packbits and np.unpackbits
BUG: add missing gufunc failure return values and missing malloc fail check
Merge pull request #4480 from juliantaylor/error-returns

BUG: add missing gufunc failure return values and missing malloc fail check
Merge pull request #4475 from juliantaylor/gil-release

Gil release for nonzero
remove assert in _get_ufunc_and_otypes, add a test in test_function_base.py
BUG: Delay npyiter size check when size may change

When a multi index is tracked and RemoveAxis can be called, the
size of the iterator may still change. This was causing failures
for example for the SVD, because the gufunc machinery requires
a temporarily larger iterator for output allocation.

Thanks to Jaime (jaime.frio@gmail.com) for noting that this is
plausible since the size check can be delayed pretty ok up
until GetIterNext (or similar functions).

Closes gh-4442
Merge pull request #4479 from leomao/master

BUG: when initialize a vectorize object, always set self._ufunc to None first. fix #3285.
Merge pull request #4466 from seberg/delay-size-nditer-size-check

BUG: Delay npyiter size check when size may change