Time stepping. Uses Crank-Nicholson