pep8
Better error message.
make tensor.outer(x,y) work when ndim != 1 as numpy.outer.
Speed up/generalize/GPU friendly the kron op.

The kron operation use existing basic function(available on the
GPU). Reusing them is faster then the scipy version, as the scipy
version end up coping the data twice. We copy it only once in the
reshape. We now also support it when the inputs ndim != 2 as scipy.