Support LinearOperator as input to svds

This adds support for `LinearOperator` arguments in `scipy.sparse.linalg.svds`. My goal is to perform PCA on sparse matrices. As you know, PCA is SVD on a mean-centered matrix X - μ; the mean-centering is problematic since it destroys sparsity and my matrices don't fit in memory in dense format. Representing X - μ as a composite `LinearOperator` solves this problem.

What I have so far: working truncated SVD on `LinearOperator`, returning either the smallest or largest singular values.

What doesn't work: passing an initial vector `v0` to `svds`. This reports `0-th dimension must be fixed to 18 but got 21` and crashes with

```error: failed in converting 10th argument `workd' of _arpack.dsaupd to C/Fortran array```

It seems like we have to pass a differently-shaped `v0` because we can't transpose a `LinearOperator`. Is it be acceptable to not support this for `LinearOperator` input?
If `n, m = A.shape`, then for other types of input, `v0` should have shape `min(n, m)` and `A` is transposed to make this work out. `LinearOperator` cannot be transposed so `v0` should always have shape `n` for this type of input.

Instead of complicating the calling sequence further, I figured I'd leave this unsupported for now; if we ever decide to add a `transpose` method to `LinearOperator`, then it would be a shame if the `svds` API cannot properly use it.