POC: implement __array_function__
Some day I hope to merge something like this, but for now it is mostly a demonstration for the numpy devs (cc @seberg not sure who else to ping) for how difficult it is to implement `__array_function__` correctly.  The "ask" is for something like `_array_func_fallback` to be implemented upstream (xref similar request https://github.com/numpy/numpy/issues/20044)

Yes, one of the things that uarray was right to try to address.  It might be good to have a clean way to traverse/replace dispatched arguments.

Alternatively, a `func._array_implementation()`, which does that same thing (calling `asarray()`) but maybe it doesn't need to be public API.  Since NumPy the numpy implementation tries to be subclass/arbitrary object friendly too often that it is a bit hard to say that you just want the array operation to happen.

Will ping @shoyer again, overall I agree that it would be nice to have something.  Hopefully without too much complexity. Mothballing.  Discussion in https://github.com/numpy/numpy/issues/20044 makes me pessimistic this is feasible.