Clean up adaptive_unsteady_newton_solve(..) function

* Combine the two do while loops into one

* Move all time step/scaling factor checks into one place

* Move all revert to pre timestep code into one place
Initial commit of midpoint by bdf1 implementation
Add more actions functions in explicit time stepper

**Incompatibility**: actions_after_explicit_step() is now called at
different times. It used to be called after each _stage_ of a time step
but is now called after each step (as implied by the name).

The new function actions_after_explicit_stage() is called at the same
times as the old actions_after_explicit_step().

Actions functions now available are:
* Before/after stage functions for e.g. updating boundary conditions

* Before/after step functions for e.g. updating solver data
Add second order Runge-Kutta explicit time stepper
Fix bug in CG where convergence failures were not reported
Add option to throw error on convergence failure in iterative solvers

Off by default.
Add Explicit_solver_pt to Problem for explicit (mass matrix) solves

* Almost always better to use different solver for mass matrix solve than
  for Jacobian solves.

* By having a separate pointer we avoid needing to swap the solver before
  and after every explicit step.

* By default it is just initialised as a copy of Linear_solver_pt

??ds might break Andrew's explicit timestepping code if he changes solvers?