WIP: Adding NEP for ufunc-overrides,
WIP: Add _find_ufunc_override function.

This function finds the appropriate override for the ufunc given the
args.
WIP: Add __ufunc_override__ functionality.
WIP: Optimizations. Change override declartion style.
ENH: Add PyUFunc_GetOverride to API.

Also includes some changes suggested by @pv.
WIP: Change __ufunc_override__ to be keyed with callable ufunc.

Change from being keyed by ufunc name by callable ufunc as suggested by
@pv.
WIP: Moved stuff ufunc override stuff to private/ufunc_override.h.
WIP: New function to find override. Based on @njsmith suggestions.
WIP: Added ufunc_override.h to setup.py.
WIP: More complete version of PyUFunc_CheckOverride.
WIP: Add new override function to ufuncs.
WIP: Remove cruft.
WIP: Change PyUFunc_CheckOverride mechanism.

Changed as per suggestions by @pv and @njsmith
WIP: Add support for overriding ufunc methods, except outer.
WIP: Another implementation of of PyUFunc_CheckOverride.

This avoids unnecessary function calls.
WIP: Adding ufunc override tests.
WIP: Add @pv and @njsmith to Authors of NEP.
WIP: Attempt to normalize ufunc args. Remove a segfaulting path.

I need a better way to find if there is a positional `out` arg or not.
WIP: Yet another implementation of PyUFunc_CheckOverride.
WIP: Fix MRO bug & normalization.