Make fpdiff work when python3 is default

By explicitly specifying python2 in the hashbang line.
Quote the compiler names in hypre and trilinos build scripts

Otherwise compiler commands that contain spaces (e.g. "ccache mpicc") crash
the build scripts in weird ways, even if they are quoted in the configure
options file.
Remove "current" options file and "user_drivers.dir_list" from version control

* Useless but constantly cause clashes when updating svn because everyone
  uses different settings.

* Add code to autogen.sh to copy in the "defaults options if no current options
  exists.

* user_drivers.dir_list is already automatically generated in autogen.sh

* Both files are already in .gitignore, I need someone who uses svn directly to
  do the equivalent in svn.
Fix warning spam generated by src/generic/partitioning.cc

Many METIS partitioning functions were declared in one place and then
declared again when they were defined (as though they were part of a
class).

This gives warnings for redundant function declarations.

Removed the unnecessary extra declarations.
Add file open PARANOID checks in creation of triangle meshes from files
Use -isystem instead of -I for external distributions (hides warnings)

This has one side effect: the external distributions are moved to the end
of the list of libraries. I very much doubt that this could break anything
but it's something to keep in mind.
A bunch of small changes

* Initialise Nnewton_iter_taken

* Make get_some_non_boundary_node const

* Add broken virtual nvertex_node() function to FiniteElement

* Rename nprev_values_for_value_at_evaluation_time (new function added by me)
  to nprev_values_for_value_at_evaluation_time, more consistent.

* Move some variable declarations into/out of #ifdefs to get rid of warnings:
** f_ml_settings in demo_drivers/womersley/one_d_womersley/one_d_womersley.cc
** nproc in src/generic/block_preconditioner.h
Fix bug in variable_from_makefile in parallel_self_test.py

If there is no Makefile in the pwd then this function would always fail
because make fails (even though a Makefile in the pwd is not really
needed).

Fixed by setting the cwd for the make command to be that of the Makefile
from which the variable is being extracted.
Add const versions of some functions

* Problem::time_stepper_pt()
* TimeStepper::adaptive_flag()
Add an untemplated base class for UnsteadyHeatEquations

This allows us to do things like setting the source function and getting
the type of the function pointer without needing to know the dimension at
compile time (i.e. without templating the problem class by dimension).
Python 3 compatability for parallel_self_test.py
Add option to CommandLineArgs to throw error on unrecognised args

Default value is false, so nothing should change for currently existing
code.
Move minimal mpi tests out of autogen.sh and into a separate script

This allows them to be easily reused in other build scripts.
Initial commit of midpoint method

Includes a self test for unsteady heat (and so requires some slightly
different unsteady heat elements which can use an Interpolator object).
Remove calls to new from inside BlockPreconditioner::get_block(...)

* This should massively reduce the risk of memory leaks in block preconditioners

* Also removed old obsolete functions in BlockPreconditioner base

* Also added obsolete wrapper functions to allow existing block
  preconditioners to continue working unmodified.

* Removed get_block<CCDoubleMatrix>(...) because CC matrices don't have any
  way of filling in the values except in the constructor (i.e. using new).

* Moved BlockPreconditioner::get_block(...) to the header (because it's only
  a tiny dispatch function now).
Moved error test in master_block_preconditioner_pt() from ifdef MPI to PARANOID

Presumably it was just a mistake to have it in ifdef MPI in the first place
Move some processing from turn_into_subs_prec(..) to block_setup()

This allows us to construct and assign subsiduary block preconditioners at
any time (e.g. in the setup phase of the driver code) whereas before it
could only be done somewhere in the middle of setup() in the master
preconditioner.
Add function to split a string up into substrings

e.g. for use when parsing parts of a command line argument.
Collection of smaller changes

* Fix spellings in error message in preconditioners

* Add const version of time() function to TimeStepper

* Ignore hypre/trilinos demo driver binaries
Many improvements to the general purpose block preconditioners

* Modify to use the new interface to get_block(...)
  So there are no calls to new hidden inside functions.

* Move some repeated code into the base class

* Add a "BlockAntiDiagonalPreconditioner"

* Rename clean up function to have names consistent with Preconditioner base
  clean_memory() -> clean_up_memory() in BlockTriangularPreconditioner.

* Change clean up function to only clean up and not delete subs preconditioners
  This seems to be the intention of clean_up_memory().

  Previously sub preconditioners were deleted and re-created in every call to
  setup() in a general purpose preconditioner.

  This allows us to:
** Remove some uneccessary deletion/recreation of subs preconditioners
** Assign subs preconditioners in a more normal C++ style
   Before we had to assign function pointers to create preconditioners, but
   this is complex and messy because C++ has almost no support for
   functional programming.

* Make destructors virtual
  Destructors should be virtual for any class that could be inherited from.

* Add a dummy PreconditionerArray implementation to remove lots of ifdef MPI
  This reduces the complexity of the code and removes the need for extra
  ifdefs in higher level code (e.g. before some functions didn't exist in
  non-MPI builds, so they would need to be surrounded by ifdef anywhere
  they are called even if there are normal if statements used at the same
  time).

  We also need to move the preconditioner array files in Makefile.am so
  that they are always built.

* Add lots more comments