BUG: fix crash on default errobj

Missing check for optional NULL argument, the case can only happen if
the error mask is 0 (the old default).
closes gh-3962
ENH: merge UFUNC_ERR_DEFAULT2 variable into UFUNC_ERR_DEFAULT

It seems it was added as a precaution to avoid breaking the rather
complicated ufunc code. It effectively disabled the skipping of the
dictionary lookup for the default values for the common case and leading
to hardly tested code in third party libraries like pandas which set the
error state to numpys old default (ignore all).
The skipping improves scalar performance by 2.5-5%.
Merge pull request #3963 from juliantaylor/default-errobj-crash

Default errobj crash
ENH: keep order in np.sort and np.partition copy

avoids unnecessary strided to contig copy for fortran arrays.
Merge pull request #3970 from juliantaylor/sort-keeporder

ENH: keep order in np.sort and np.partition copy
BUG: fix handling of negative strides in npy_memchr

the new code did not account for them at all, add the old loops back but
keep the stride 1 optimization for sparse masks.
BUG|MAINT: Fix reference count bugs, init NpyIter strides

Also changes some tests to not use np.empty as to avoid
valgrind spam.

The NpyIter strides are arbitrary, but 0 makes sense, and the
strides are used to decide which transfer function to use, etc.
causing lots of warnings in valgrind.
MAINT|BUG: Some small refcounting fixes
BUG: Fix clongdouble type in scalar type selection
crackfortran: changed string.lowercase to string.ascii_lowercase

Compatibility with Python3, which dosn't have string.lowercase.
Merge pull request #3971 from ochoadavid/patch-1

BUG: changed string.lowercase to string.ascii_lowercase
BUG: Further reference count issues in __int__ and friends
TST: Initialize some arrays to to avoid valgrind warnings
Merge pull request #3965 from seberg/valgrind

MAINT: Initialize strides in NpyIter and silence valgrind
MAINT: remove trailing zero count path in npy_memchr

its only actually faster than just running through the trailing bytewise
loop if the needle is in the last byte.
BUG: fix broken UPLO of eigh in python3

UPLO was cast to bytes and compared to a string which is always false in
python3.
closes gh-3977
MAINT: runtests: enable generation of C code coverage info via gcov
Merge pull request #3969 from juliantaylor/memchr-bug2

BUG: fix handling of negative strides in npy_memchr
BUG: reject invalid UPLO with ValueError in eigh/eigvalsh

to prevent unintentional use of wrong function. Restores 1.7 behavior.
Merge pull request #3979 from pv/gcov

MAINT: runtests: enable generation of C code coverage info via gcov