Added bout/assert.hxx, tidying Field3D

ASSERT macros to simplify checking. Field3D tidied up a bit.
Fixed bug in BoutMesh. test-invpar passes

test-invpar exposed bug related to communications in BoutMesh. If ixseps1
and ixseps2 were not set in the input file, then the local nx was used
rather than global. This could then result in incorrect communication
when NXPE > 1
Adding missing operator declarations

Accidentally removed in earlier checkin.
Fixes to Delp2 and test case

o Delp2 gave incorrect results for MXG != 2
  (nearly always run with MXG = 2)

o Added a test case (test-delp2) for Delp2.
  Checks that operator gives the same result for varying
  number of processors and values of MXG
Fixed missing return value in griddata.hxx
Fixed bug in memory allocation for SPT Laplacian

Memory for solve routine uses static arrays (this should be changed!).
When these were allocated, the maximum number of Z modes was used, based on
filtering. If another SPT instance was created with less filtering, then
the static arrays would be too small.

Correct solution would be to get rid of static arrays, but for now
the arrays are allocated to be as large as they could be without any filtering.
Added SQ(Field3D) function

Just calls f*f. Useful shorthand sometimes, and matches
existing SQ(BoutReal) and SQ(Field2D) functions
Invert laplace bug fix

o Deleted invert/invert_laplace.cxx, as not used any more
  (contained old version of the solver for comparison)

o Laplace::solve was not setting the cell location, so it
  reverted to CELL_DEFAULT. Now sets location to be the same as
  the RHS (b).
Additional fixes for Laplacian::solve

SPT and PDD implementations have their own solve(Field3D) functions,
which need to set the cell location of the return value.
Added D4DX4, D4DZ4 operators

For hyper-diffusive terms. Use 5-point stencils, so avoids need
to communicate with two calls to D2DX2 etc.
petsc: updates for TS and SNES interface changes in petsc-dev
Merge branch 'master' of https://github.com/bendudson/BOUT
PETSc solvers 3.1-3.3 compile. Fixes issue #38
Merge pull request #39 from jedbrown/jed/petsc-3.4

petsc: updates for TS and SNES interface changes in petsc-dev
Fix emptysolver.hxx for --without-pvode option
RK4 solver fixes, improvements

o Bug fix in take_step: was using f0 rather than start
  so adaptive stepping error control broke

o Adaptive timestepping must now be switched on using adaptive=true
  By default now fixed timestep

o Timestep now set using "timestep = .." setting, rather than "start_timestep"
  to be consistent with karniadakis solver

o Updated timestepping solver manual entry
Field improvements

o Added Field2D::setBoundaryTo(Field2D) function, to match similar function for Field3D
o FieldPerp now checks Y indices on get and set
o Added DEPRECATED macro (in include/bout/deprecated.hxx), which prints a compiler
  warning when the marked function is used. Used for Field::clone function for now,
  as this function allocates memory and can result in unexpected behavior
Merge branch 'master' of https://github.com/bendudson/BOUT
Added PETSc based Laplacian inverter by J. Buchanan, with some bug fixes and optimizations. Added tests for that inverter 1) in a trivial Diag(1,1,1) metric and 2) in metrics from several slices of a grid representing the MAST SOL.