MRG Dimensionality reduction using LSA/LSI

Following the recent discussion on the ML, I decided to implement latent semantic analysis (LSA) for dimensionality reduction. The implementation is slightly different from what I described in my email because I figured it could be done simpler. The code works (try the clustering example with `--lsa=100`), the tests pass and there's documentation, but...

* the docs need some more love, and especially some reference
* there's no doctest
* there's a potential opportunity for optimization in `fit_transform`, see the comment
* maybe this should have a more general name, like <del>`ReducedSVD`</del> `TruncatedSVD`; it's only LSI when applied to term count matrices

Let me know what you think!