Moved geometry functions into Coordinates

o Mesh now has a function coordinates() which returns a pointer
  to a Coordinates object

o The Coordinates class now stores the metric tensor components

o Most of BOUT++ is now broken, and will need updating to compile
Work on Coordinates class

o Adding differential operators which depend on metric
  e.g. Grad_par, Div_par to Coordinates class

o Code in src/mesh compiles, including difops

o Some code in src/field compiles. Vector operations
  still need fixing

o
Working on Coordinates

o Vector code now compiles

o Started work on derivs. This is complicated because
  the DDX, D2DX2,... routines depend on mesh->dx, dy and dz
  but these are now in Coordinates.

  calling mesh->coordinates() might create a new Coordinates object,
  which in its constructor calls DDX() to calculate metric components.
  DDX then needs dx, so calls mesh->coordinates()...

  Could either pass dx,dy,dz into DDX,DDY,DDZ or move DDX etc into
  Coordinates as well.
Moving derivs into Mesh

DDX etc. becoming Mesh::indexDDX()

provide derivatives in index space
Moved 2nd and 4th-order derivs to Mesh
Test suite passes

Several changes to user code required:

1. All references to metric tensor need to be changed from mesh->
   to a Coordinates pointer

2. StaggerGrids is now in the [mesh] section, rather than a global

3. The differencing methods are per-mesh, so rather than
   [ddx], [ddy], [ddz] these should be in [mesh:ddx], [mesh:ddy], [mesh:ddz]