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")
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
Fix for CVODE solver

Only tested PVODE, but had typo in SUNDIALS cvode interface
Adding Discrete Sine Transform option for Laplace solver

cyclic solver (type = cyclic) for Laplacian problems
can now use DSTs. This allows zero-value boundary conditions to be
set on the Z boundaries
Improved Matlab data import routine

Updated user manual section on Matlab routines

Author: Sanat Tiwari, Institute for Plasma Research. Gandhinagar, Gujarat
can now plot different graph types on different axes, and multiple lines on the same axes
removed duplicate call to plt.show() and duplicate movie creation calls
Merge branch 'master' of git://github.com/brey/BOUT-dev into brey-master
Merge branch 'brey-master'
Merge branch 'master' of git@github.com:boutproject/BOUT-dev
IDL collect routine

Updated to work in the same way as the Python collect.

Variable names can be specified using keyword var="name"
or as a parameter e.g

IDL> n = collect("density")

If a name is not found, it is first checked for case mismatch, and now
checked for abbreviations. For example:

IDL> n = collect("den")

would find the variable name "density" and use that. If the abbreviation
is ambiguous, nothing will be read, and the possible names
will be printed.
Adding timestep monitoring

Allows monitoring of individual timesteps,
rather than output timesteps. See the user
manual section for details of how to use and enable this
feature.
Python watch routine

Small routine to watch a file or collection
of files until one changes.

Possible application is a tool to monitor
the output of a BOUT++ simulation by watching
BOUT.dmp.0.nc
Showdata error handling

o Rather than exiting, showdata now raises errors.
  In an interactive session this will return to the
  prompt, rather than quitting entirely

o Checks for no inputs (Nvars == 0)

o Moved most documentation into function docstring,
  rather than module docstring

o To get time showdata collects "t_array" from current directory
  If this fails, t is now set to the time index using linspace
Merge branch 'improved_showdata'
Laplacian inversion using shooting method

Attempt to set boundary conditions only on outer boundary
then shoot inwards. Appears to be very sensitive to noise,
and easily blows up for high-k modes.

Test case in examples/test-laplace2 using input shoot/BOUT.inp

Just for testing; not recommended for use
Python collect routine

If a variable name is used which is not found in the
data files, then the Python collect routine will now
look for variations on the name:

o First checks for case mismatches e.g. "density" rather than
  "Density"

o Then checks for abbreviations e.g. "den" rather than "density".

In either case if the name is ambiguous then the possible
matches are printed and an exception is raised
Merge branch 'master' of https://github.com/boutproject/BOUT-dev
control