SPARK-1782: svd for sparse matrix using ARPACK

copy ARPACK dsaupd/dseupd code from latest breeze
change RowMatrix to use sparse SVD
change tests for sparse SVD

All tests passed. I will run it against some large matrices.
breeze uses UFunc with implicit matching. Here we need to explicitly specify the type, otherwise the compiler complains, e.g. "Could not find an inplace implicit implementation for this UFunc with arguments breeze.linalg.DenseVector[Double], Double, breeze.linalg.Vector[Double]"