Make SVD::direct more generic.
Make SVD::direct produce square U and V. Make SVD::new work when m < n.
Order eigenvalues of a symmetric matrix from highest to lowest. Order singular values of SVD::direct from highest to lowest.