Make spmv compatible with non square matrices

I don't know how to generate .c file from the .pyx so I didn't use spmv in my recent stochastic speed improvement pull request.
I don't really understand why do we have the spmv. I see just a negligible speed improvement compared to the scipy.sparse matrix vector product.