Allow multiple meshes and clean up in copy_dof_pt_to_data_history_value(...)
Improve check-makefile-subdirs.py

* Better formatted output

* Smarter input

* Use function from parallel_self_test.py
Fix memory leak: delete predictor_pt in midpoint destructor
Add safe global_to_node lookup in SumOfMatrices code

* Rename old method to unsafe_...

* Safe version is better for normal use (throws error on failure) but unsafe
  (return -1 on failure) is needed for some things.
Add support for face elements in interpolator class
Clean up and add error check in SumOfMatrices
Force builds of iterative solvers for SumOfMatrices
Remove unused Setup_time variable from preconditioner base
Make all functions in preconditioner base class virtual

* This is needed for preconditioners which operate only on the main matrix
  of a sum of matrices (we need to be able to overload the functions).
Update .gitignore

* Use more general matching for files when possible
* Add some new demo driver binaries
Fix some missing throws of OomphLibErrors in sum_of_matrices.h
Add option to StringConversion::to_string to specify precision
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

* Use a call to unsteady_newton_solve(..) for the solve itself
  (instead of having the same code twice)

* Required an extra option in unsteady_newton_solve: calculate predictions
  Specify whether to calculate predictions or not, defaults to false.

??ds currently not compatible with doubly adaptive solve fix this before
commiting!

??ds currently doesn't handle/rethrow newton solver errors, not sure if
this is a problem
Initial commit for bdf1 implementation of midpoint method

Required changes in unsteady_newton_solve and TimeSteppers:

Each TimeStepper now has actions_before_timestep(Problem*) and
actions_after_timestep(Problem*). These are called by the problem just
before and after (respectively) the newton_solve() call in
unsteady_newton_solve(..).