clean up of diagonalization, use dense_diag calcs
access to scipy-eigs, numpy-eigs, and arnoldi