PetscLaplace solver preconditioning

The old FFT-based solvers (tri, spt) can be used to precondition
the PETSc Laplacian solver. This seems to work well for the
test-laplace2 and test-petsc-laplace tests.
Field2D: added missing msg_stack.pop()

Resulted in messages being left on the stack, and confusing
debugging output
Added PetscLib::cleanup()

Calls PetscFinalize if Petsc was initialised and not yet finalised.
This is now called in BoutFinalise.
Merge branch 'master' of git://github.com/bendudson/BOUT

Conflicts:
	src/invert/laplace/impls/petsc/petsc_laplace.hxx