Put all petsc-legacy redefinitions in one header file.

This cleans up some repeated #if PETSC_VERSION stuff in the modules that use fortran.

Using petsc in any of our fortran modules is simplified to:

  module foo
    ...

  #ifdef HAVE_PETSC_MODULES
    use petsc
  #endif
    implicit none

  #include "petsc_legacy.h"
    ...
    contains
    ...

It also adds supports for building Fluidity linked with petsc-dev master. Since a few
people are now reliant on using petsc master I suggest we keep fluidity up-to-date with
it, i.e. as soon as an API change hits petsc master we push fixes for it to fluidity's
master (pull request if necessary), obviously without breaking support for previous release
versions of petsc.

Where API changes between petsc versions can be handled via #define macros, our
fortran code should read as if it is using the latest stable release (currently 3.4). When
linked against other petsc versions (including petsc-dev master) the macros,
defined in petsc_legacy.h, should then adapt this to match the API of that version.