Added BoutComm::rank and size function

Useful shortcuts, rather than using BoutComm::get() and MPI_Comm_Rank etc.
Added validity checking to GridData

If the wrong file name was specified for the input grid,
previously a message about missing "nx" was printed, which
was a bit misleading.

Additional checking means new error message is

"Invalid data source. Maybe the wrong grid file name?"

which should be clearer.
IDL grid_contour routine improvements

Making routine more robust for SND and core-only cases
Improvements to parallel inversion code

Can now cope with open field-lines, where zero-gradient BCs are currently used.

parderiv can now include additional terms for Z derivatives, mixed Y-Z derivatives,
and first-order Y derivs

SurfaceIter extended to test whether processor is on a boundary
Differential operator changes

o Added mixed Y-Z derivative operator D2DYDZ
  Dummy D2DXDY also added, but returns 0.

o Renamed Laplacian function to Laplace, to avoid conflict with
  perpendicular inversion class, also called Laplacian.

o Added functions Laplace_perp and Laplace_par which implement
  the full perpendicular and parallel Laplacian operators.

  Note: Delp2 is approximately the perpendicular Laplacian, but
  neglects Y derivatives. Laplace_perp includes Y derivative terms.

o Added something in the user manual on the derivative operators
Added FieldData::copyBoundary() function

Copies the boundary condition from another field.
Fixed PETSc solver

Accidentally broken by update to Solver::run() and monitor functions.
Small update to user manual

Added note on fixing cvode.cxx if it fails to compile (int vs long issue)
Merge branch 'master' of https://github.com/johnomotani/BOUT
Fixed PETSc Laplace solver when no petsc

If no petsc available, dummy solver created which throws an error.
Was missing some required functions.
Removing checks for negative values in Field3D::log

Corner cells set to zero, and log previously checks all values,
including the corners. Could only check core cells maybe?
Modified communicators for DND plasmas
Hypnotoad: Added read_idam routine

Reads a magnetic equilibrium directly through IDAM, making analysis of MAST
shots quicker (no need for a & g files). Because IDAM can be quite fiddly
(firewalls and so on), usage is in two steps:

1. Use read_idam to get the data. Save as a variable 'rz_grid' in an IDL file

2. In Hypnotoad, restore this file ("restore R-Z"),
IDL grid_contour: Data ranges can now be specified

mind and maxd keywords specify the range to be used for the color scale
Added Field3D::applyBoundary(region, condition)

e.g. applyBoundary("target", "neumann")
Fixes for DND equilibrium communications

Problems duplicating MPI_Comm handles. Work-around to
copy rather than duplicate.
Adding boundary conditions

o Neumann2  : 2nd-order one-sided differencing for Neumann boundaries

o NeumannPar : Variation on Neumann boundaries, including a factor of
               sqrt(g_22)
Small fix to BoutMesh cleanup

No longer tries to free comm_middle, as it's not a distinct
communicator (see previous commit)
Adding boundary options for Laplacian solve

See include/invert_laplace.hxx for new codes

o Set zero-Laplacian for DC on inner boundary (131072)

o Set the inner boundary width to 1 (262144)

o Set the outer boundary width to 1 (524288)

o Two boundary conditions similar to Neumann, but
  with metric component g_22
Small improvement to restart.py

restart.create can now pull out a given "final" time-point from
a set of dmp files, to create a new set of restart files.