SVD for PCA: SVD sepecially designed for PCA

This implementation of SVD is mainly for PCA to use. It uses Lanczos
iteration method to decompose the original matrix into PBQ^t, where B is
a bidiagonalized matrix. We assume that B can be loaded into the memory.
Since this SVD implementation is for PCA, this is a reasonable
assumption. B is then further decomposed into XSY^t using Eigen's
JacobiSVD function. The final results are U = PX, V = QY and the
singular values S.

This implementation provides svd (for dense matrix), svd_block (also for
dense matrix but faster), svd_sparse (convert a sparse matrix into a
dense one, slower) and svd_sparse_native (directly operate on the sparse
matrix, much faster for really sparse matrices).

The performance on DCA is comparable to R. Actually, it is faster for
large dense matrices.