sparse: Add support for out= argument in __numpy_ufunc__

Add support for `out` argument in ufuncs. This also makes dense matrix in-place operations work again.

Fixes gh-2938