Modifying Python routines for Python 3

So far only changes to print:

print ""  -> print("")
Added an eigenvalue solver to implement power method

Iterative method, repeatedly applying the RHS function to
a solution. The result is the largest eigenvalue and
corresponding eigenvector.
Starting a GlobalFields class

Will provide a way to gather and scatter entire fields onto a single processor.
Uses include interfacing to other codes, and maybe parallel I/O.
Adding test case for GlobalField classes

Will check the gather/scatter facility
Modifying preconditioner handling in solvers

Need to enable PhysicsModels to use preconditioners.
Moving the callback function handler into Solver,
rather than separate implementations
Small fix to Euler solver

Squash output message every time the restart file is written
by writing to default file name, rather than re-setting the name
every time.
User manual: small section on writing data files

How to create a new data file output, write the data, and read into
Python or IDL.
Adding timestep monitor to solvers

To monitor or save data after every timestep, a monitor can be added
to the solver. For this to work with PVODE & CVODE, they need to be run
in one_step mode, currently off by default. To enable, use the setting:

[solver]
single_step = true

(or command-line "solver:single_step=true")
Improved python showdata routine to allow animation of multiple plots simultaneously
Timestep monitor in new API

To enable, must set

[solver]
monitor_timestep = true

For CVODE and PVODE solvers, this switches to single step mode.

In the new API based on PhysicsModel, the monitors are protected
virtual functions which can be implemented by user code.

See examples:

monitor        : Old (C-like) API
monitor-newapi : New (OO) API
User manual section on monitors

Added brief description of timestep monitoring
Improved python showdata routine

Luke Easy's improved showdata code. Doesn't affect core code, so
merging straight into master
Fix for CVODE solver

Only tested PVODE, but had typo in SUNDIALS cvode interface
More updates to GlobalField classes

Not yet complete, but close...
GlobalField2D working

2D gather and scatter of data working. Some typo in 3D version,
so not yet working
Fixed GlobalField3D::msg_len

Forgot to add zsize when copying from 2D version
User manual section on GlobalField

Brief description of using GlobalField variables
Adding GlobalField classes

Gather / Scatter operations on entire mesh. Can be used for
coupling to external codes, may also be useful for I/O from a single
processor.

Doesn't affect any other code, so adding directly to master.
Adding constants in SI units to constants.hxx

In namespace SI, so SI::me is the electron mass in kg.
Python modules for BOUT++ pre-processing

Open for further testing