Remove regenerate_config hacks from build machinery

Now running autogen.sh should automatically select the required build
steps in every case! Everything should just work and you should never
need to run it with the --rebuild option.

This will also massively speed up rerunning autogen in many cases
because ./configure is only run if it is really needed (previously it
was always run).

We are now almost using autotools in the "approved" way,
except that we generate the list of user directories automatically and
allow specification of configure options from a file.

The changes needed were:

* Include the directory list file into configure.ac properly.

* Use `autoreconf -i` instead of attempting (and failing) to run the
  right selection of autotools commands manually. This allows make to
  automatically detect when the driver list file has changed and rerun
  the necessary commands.

* Add code to autogen.sh to detect when the configure options have
  changed and force the rerunning of autoreconf automatically (instead
  of needing to specify a rebuild).

* Remove regenerate_config_files.sh and related files because they are
  no longer needed.
In autogen.sh fix bug with -h if run from another directory
In interactive_autogen.sh check we are in the correct dir
In autogen.sh clarify some comments
In autogen.sh combine all "first build" stuff

There are a number of things that need to run if this is the first time
we have built oomph-lib here (or if a rebuild has been forced). Move
them all into one section of the code.
In autogen.sh check configure options file exists
In autogen.sh fix bug in checking of options

It was always checking the options file current instead of
whatever was actually being used.
In autogen.sh auto detect the oomph-lib root

It is always the dir where autogen.sh is stored.
In autogen.sh automatically find Makefile.am's in private/
In interactive autogen auto detect oomph root, and do it sooner in autogen

Simplifies echoing of options.
In interactive_autogen update args and don't write "current" file
In autogen.sh etc. update usage
In oomph-convert.py overwrite outdated output files automatically
In oomph-convert.py clean up booleans and flag naming
Add broken virtual vertex_node_pt(..) to FiniteElement

It's implemented by both T and Q elements so it makes sense to be able
to call it using pointers to the base class!
Add function to create mesh boundary node lookups from the nodes

Since the nodes themselves already store data on which boundary(s) they
are on we can build the mesh's lookup schemes from the node data.

This makes life much simpler when using old meshes to create the nodes
for new meshes.

Only takes O(Nnode) time (unlike some of the other boundary lookup
initialisation functions).
Move explicit predictor stuff from midpoint to TimeStepper base

* This allows us to write other time steppers which work in the same
  way, I need this for debugging...
Move Problem::distributed() out of #ifdef MPI

So that we can easily check if a problem is distributed without having
to write our own ifdefs around it.

If we don't have MPI the function just returns false.
Make LinearSolver::is_doc_time_enabled() const
Move some mesh communicator functions out of #ifdef OOMPH_HAS_MPI

Moved functions: is_mesh_distributed() and communicator_pt(). Both do
the obvious thing for the case without MPI (return false and null
respectively).

This is needed to compile the line visualiser header without mpi.