Prevent implicit ufunc use with Qobj
Prevent implicit ufunc use with Qobj

Because Qobj defines __array__, it can implicitly be used with numpy
ufuncs and other interface functions, but these will return base numpy
arrays.  These could have been cast back to Qobj with __array_wrap__,
however we do not want to encourage using elementwise operations, as we
generally do not fulfil the numpy interface.  Defining __array__ is just
a convenience for object normalisation.

See gh-1433 for more discussion.

cgranade/qutip,cgranade/qutip,qutip/qutip,qutip/qutip