Instead of using np.pinv we should use SVD and do the pseudo-inverse ourselves while also saving the eigenvectors that span the degenerate subspace corresponding to the zero-eigenvalues.
We may also want a feature, either here or in redcal, of projecting known degenerate eigenvectors into the subspace and seeing if they span it or if there are additional missing eigenvectors.