Algebraic Temporal Blocking for Sparse Iterative Solvers on Multi-Core CPUs