Adding bout-config script

Intention is to make it easier to use BOUT++ as a library
and to use multiple versions e.g. through Modules
output.make to capture flags for use in bout-config script

Flags needed to compile e.g. PETSc are available at configure
time. If the environment changes later then PETSC_DIR etc. may
change, in which case the link flags could be different.
Refactored the flags in invert_laplace: removed all the boundary conditions from `flags' and put them in `inner_boundary_flags' and `outer_boundary_flags' instead; updated the implementations correspondingly. Largest flag is now 1024 instead of 2097152 which should make setting the options more convenient (if not much clearer) and leave more room for implementing further options. This will break all examples that used flags other than 0 and any that call the invert_laplace() functions which now have extra arguments for inner_boundary_flags and outer_boundary_flags.
Use global_flags instead of flags for the new-style code, so that legacy code can still use flags option. setFlags(int flags) now interprets old-style flags and sets global_flags, inner_boundary_flags and outer_boundary flags appropriately. invert_laplace() functions reverted back to just an `int flags' argument without *_boundary_flags, then use the new setFlags(flags). Legacy code should now continue to work, while the new style allows easier additions to global_flags and *_boundary_flags.
Modified a few files that used flag values (formerly) set in invert_laplace.hxx not to depend on it (just copied in the requisite numerical values).
Added VDDX_C2_stag and VDDX_C4_stag derivative methods
Exception handling: fixed (in bout++.cxx and solver.cxx) to catch by reference not by pointer.
Merge branch 'master' of http://github.com/boutproject/BOUT-dev
Added example makefile to use bout-config script
Fixed 'deprecated conversion from string constant to ‘char*’' errors in petsc_laplace.cxx
Merge branch 'master' of http://github.com/boutproject/BOUT-dev
Merge branch 'master' of http://github.com/boutproject/BOUT-dev
Merge branch 'master' of http://github.com/boutproject/BOUT-dev
Started Flux Coordinate Independent method

Each Field3D object can now have two associated fields:

Field3D f;

f.yup()  -> Field3D&
f.ydown() -> Field3D&

If mesh->FCI is false (the default), then f.yup() and f.ydown() return
references to f. This is for backwards compatibility, so if FCI isn't used
then no more memory is used than previously.

To enable FCI, switch on in BOUT.inp:

[mesh]
FCI = true

The first time yup() and ydown() are called, they will allocate new
fields. This is the same system used for time derivatives and the ddt() macro.
Added routine to put 3D variables into BOUT++

>>> from input import transform3D
>>> from numpy import zeros

>>> a = zeros([4,6,8])

>>> t = transform3D(a)

t can now be put into a NetCDF file
Fixing test-dataformat example
Changes to Solver classes

o Multiple solvers can now be created, using separate options

o By default solvers don't save anything to dump file, unless explicitly
  added (solver->outputVars(dump)). This is done for the main solver
  in boutmain.hxx or physicsmodel.hxx
  -> Any additional solvers won't corrupt BOUT.dmp.*

o Restart files can be disabled by setting "enablerestart" to false
  in the solver options.
  -> Any additional solvers won't overwrite BOUT.restart.*

o Base Solver class handles all restart file writing, rather than individual
  solver implementations. This made disabling restart files cleaner.

o Small bug in RK4 cleanup fixed

o Bug in new Field3D yup and ydown implementation fixed. Was
  using mesh->FCI in Field3D constructor, which may be called before
  main().
Change yup, ydown getters to return pointers
Add 3D tensors for ints
Add methods to DataFile in order to use python "with" keyword