initial svds support based on eigs

Added support for sparse truncated SVD based on `eigs`. Keyword inputs are the same as for `eigs`. Returns left singular vectors, singular values, right singular vectors (and also outputs from eigs). Added a test case.
This approach ruins the precision of the small values. I think that the documentation suggests op = [0 A;A' 0] for the SVD. I'd also like to see the allocation free version, `A_mul_B!` for later use.