Add working implementation for imaginary time propagation using the low rank algorithm in the thermal code. Current code only uses the full rank algorithm. Legacy has low rank code that needs to be refactored and extended to non-diagonal trial density matrices.