BUG: core: don't ignore raised exceptions in __numpy_ufunc__ handler
REF: core: clean up PyUFunc_CheckOverride

Move argument normalization out from the inner loop, reduce complexity.
Add error checks.