ENH: NDArrayBackedExtensionArray.__array_function__
motivated by getting np.delete and np.repeat working, had to implement a few others to get the tests passing.

If we go down this path, I plan to incrementally add support for others, some of which (e.g. vstack) will avoid some object-dtype casting.

cc @TomAugspurger @shoyer @seberg any suggestions to clean the implementation, particularly the fallback and the unknown-args comments?
@TomAugspurger meant to cc you in the OP but made a typo Closing to clear the queue; won't be super-useful until our min numpy version is 1.17