Check in subsidiary block preconditioners: matrix_pt must be same as master

git-svn-id: svn+ssh://vummath.ma.man.ac.uk/home/svn-oomphlib/public/trunk@528 595e1d82-adf1-4282-bac7-b6073fa2ca8e
Made general purpose block preconditioners work with block sub preconditioners

* Required a nasty amount of if statements.
  It would be nice to fix it in the future so that the arguments to
  preconditioner setup and solve for subsidiary block preconditioners are not
  completely different from everything else.

* Needed to make master_block_preconditioner_pt() const
  Also made it return a BlockPreconditioner<MATRIX>* rather than
  Preconditioner*. Since the pointer is stored as that type it must be safe.

* Corrected mistake in anti-diagonal block preconditioner
  Should use blocks: (i, nblock - i -1), I missed the -1 before.

* Changed BlockDiagonalPreconditioner to use the right block_setup()
  Before it forced the use of the version in BlockPreconditioner, which is
  wrong if there is any dof_to_block mapping set.

* PARANOID check in exact block preconditioner
  can't have subsidiary block preconditioners

* Replace calls to new in exact block preconditioner

* Move large functions into a .cc file
  Speed up compilation times/reduce binary sizes.

  Also needed to specify templates to build in the cc file.

* Probably still needs some work to:
  Make things more efficient when we have multiple levels of block
  preconditioner, at the moment there is unecessary swapping back and forth
  between block representation and full representation of various vectors.

  Make some internal code cleaner.

git-svn-id: svn+ssh://vummath.ma.man.ac.uk/home/svn-oomphlib/public/trunk@529 595e1d82-adf1-4282-bac7-b6073fa2ca8e
Move large functions from block_preconditioner.h to .cc file

* Remove some now-unused header files

* Had to add specification of which templates to build in .cc file

* Comment out some calls to functions that don't exist
  In blockPreconditioner::document() there are calls to first_lookup_row()
  and nlookup_rows() which don't exist. The function document() is never
  used as far as I can tell. Not sure how this wasn't caught by the
  compiler sooner.

git-svn-id: svn+ssh://vummath.ma.man.ac.uk/home/svn-oomphlib/public/trunk@530 595e1d82-adf1-4282-bac7-b6073fa2ca8e
Automatically lookup meshes from master in subsidiary preconditioners

* So we don't have to set meshes in subsidiary preconditioners

* Meshes never used for subs prec (in block preconditioning framework)
  Might be used elsewhere, which is why we need a lookup and not just no
  mesh_pt() allowed at all.

* Updated existing block preconditioners

* Plenty of PARANOID checks to see if any meshes are being ignored anywhere
  e.g. if a mesh is set for a preconditioner then it is turned into a
  subsidiary preconditioner, user might expect that mesh to be used so we
  throw an error.

git-svn-id: svn+ssh://vummath.ma.man.ac.uk/home/svn-oomphlib/public/trunk@531 595e1d82-adf1-4282-bac7-b6073fa2ca8e
Add virtual destructors in poly_interp.h

git-svn-id: svn+ssh://vummath.ma.man.ac.uk/home/svn-oomphlib/public/trunk@532 595e1d82-adf1-4282-bac7-b6073fa2ca8e
Re-implement variable precision of matrix output in a more general way

* Revert commit 523 (original implementation)

* Instead use a single function in Matrix (the base class):
  Modifys the streams precision, calls the normal
  sparse_indexed_output(...) which must be implemented in every matrix,
  then resets precision.

  Two advantages:
** Only needs to be implemented once and works for all matrices ever written
** Faster because we only modify precision once rather than before
   every matrix entry
Fix for self tests with automake versions > 1.13

If we have automake version more recent than 1.13 then the default is to
use the new parallel self test harness which doesn't work with
parallel_self_tests.py (and doesn't actually run tests in parallel without
a major rewrite of all Makefile.am s). So we need to disable it. However
the command to disable the new test harness was only introduced in version
1.12 which is still very new!

Additionally autoconf has no way of checking version numbers etc. so we
can't implement a conditional option to automake there.

So it looks like the only way around this for now is to modify configure.ac
in regenerate_config_files.sh if the automake version is greater than
1.12. Since the only (approved) way to generate configure.ac is using this
script it should be safe.