New physics model API

Rather than implementing C-style functions, physics models
can be defined by defining a class which inherits from
PhysicsModel. This is done by including

<bout/physicsmodel.hxx>

for new-style interface, and

<boutmain.hxx>

for the old style. For now both ways are supported.

An example is in

examples/advect1d-newapi

which is the same as the advect1d example, but using the new API.

Main motivations are:

o To make it easier for large models to be split into multiple files
  without resorting to the preprocessor.

o To enable multiple physics models to coexist. This should make it
  neater to couple two existing models together. Using the old method
  this may have been possible with namespacing, but would be messy.
Added preconditioning to elm-pb example

Preconditioner for shear Alfven wave dynamics. To enable set:

[solver]
use_precon = true

Short test using small grid gives without preconditioner:

1.000e+00         42       7.72e+01    87.7   10.4    1.0    0.2    0.7
2.000e+00         35       6.35e+01    85.7   10.5    0.9    0.1    2.9
Run time : 2 m 21 s

With preconditioner:

1.000e+00         27       5.81e+01    67.8   15.4    1.2    0.2   15.3
2.000e+00         18       4.01e+01    61.0   16.5    1.4    0.1   21.1
Run time : 1 m 38 s