Reorder time stepper/problem actions_after_implicit_timestep()

Time stepper actions are done first so that the time step is completely
finished before the problem calculates any auxiliary values.

This is needed to make midpoint work with semi-implicit magnetostatic
calculations.
Make shift_time_values() virtual

So it can be overloaded in my semi-implicit problems.
In MidpointMethodByBDF also shift pinned values in update step

* This implementation of midpoint rule uses a BDF1 step to the midpoint
  followed by an algebraic update to get to the end of the time step.

* The update should probably be applied to all values, but was only
  working on dofs before.

* Shifting pinned values is still optional in case it breaks something.
In parallel_self_tests.py improve detection of hlib tests

Prevent it from detecting "oomphlib" as containing hlib in
check_if_hlib_driver().
Add magic number for pinning only for a segregated solve

Having a separate number to normal pinning allows us to easily undo the
segregation at the end of the solve.
In explicit time stepping move f calculations inside actions_before...

Otherwise we can have issues with segragated solves where values aren't
correctly pinned for the first f evaluation.
In Problem::calculate_predictions() fix unused variable warning

(Needed PARANOID flags)
Add option: crash if a Newton step fails even inside adaptive time step
In SumOfMatrices rename maps and add access functions
In problem add function to set history values of dofs
Add output operator for Data objects
Rename Explicit_solver_pt to Mass_matrix_solver_pt
Add function get_dvaluesdt and use it instead of get_inverse_mass_...

Motivation:
* Before this was done by modifying the time steppers then calling
  get_inverse_mass_matrix_times_residuals(...).

* This name is more representative of what the function is actually for.

* Now modification of time steppers only needs to be done in one place
  rather than multiple places (in TR::actions_before_timestep(..) for TR
  and in Problem::explicit_timestep(...) for explicit time steppers).

* Any additional pre-get_dvaluesdt modifications to the problem can now
  be easily added by overloading. (e.g. in LLG problems we sometimes
  need to modify the residual function being used.)

Implementation:
* For normal problems get_dvaluesdt(..) just modifys time steppers then
  calls get_inverse_mass_matrix_times_residuals(...).

* All explicit time steppers now call get_dvaluesdt instead.
Fix bug where copied nodes were updated twice by imr
Add more detailed error message in imr update
Make clear_copied_pointers() public

It is useful to be able to convert copied (i.e. periodic) nodes back
into normal nodes.
Allow make_node_periodic(..) to make copies of copies of nodes

In make_node_periodic(...) if the node to be copied is already a copy it
now handles it instead of crashing.

It handles it by making the node a copy of the "node_to_be_copied"'s
copied node (we need better terminology here... sorry).

So starting with n1 not a copy and n2 a copy of N:

n1
n2 -> N

if we call make_node_periodic(n1, n2) we get:

n1 -> N
n2 -> N

which seems sensible.
Implement adaptive BDF<1>
In specify command line args add optional documentation argument

Documentation is a string which is outputted when the program is run
with -help/--help.

Also tidied up:
* Braces added to oomph-lib standards
* Make things like ((*it).first).second more readable
Add output operator for nodes