Refactor advance and adjoint advance timesteps
Refactor advance and adjoint advance timesteps

1) For the primal time loop, we need to maintain consistency between the
time instance for which we have solved and what is stored via SolutionHistory.
2) For the adjoint time loop, made sure that we recover the primal solution
at the current time instance, to solve for the adjoint at the next time instance.
3) More clear commenting, clarification of how the initial condition storage is handled.

BalticPinguin/libmesh,libMesh/libmesh,BalticPinguin/libmesh,libMesh/libmesh,jwpeterson/libmesh,jwpeterson/libmesh,jwpeterson/libmesh,BalticPinguin/libmesh,roystgnr/libmesh,BalticPinguin/libmesh,dschwen/libmesh,jwpeterson/libmesh,roystgnr/libmesh,dschwen/libmesh,dschwen/libmesh,BalticPinguin/libmesh,BalticPinguin/libmesh,roystgnr/libmesh,BalticPinguin/libmesh,jwpeterson/libmesh,libMesh/libmesh,libMesh/libmesh,jwpeterson/libmesh,libMesh/libmesh,jwpeterson/libmesh,BalticPinguin/libmesh,dschwen/libmesh,dschwen/libmesh,roystgnr/libmesh,dschwen/libmesh,libMesh/libmesh,libMesh/libmesh,roystgnr/libmesh,roystgnr/libmesh,dschwen/libmesh,roystgnr/libmesh,libMesh/libmesh,dschwen/libmesh,roystgnr/libmesh,jwpeterson/libmesh