Version used for first adaptive midpoint experiments

Added adaptive midpoint method using AB2 as a predictor (see notes).

Added some (global) parameters in ode.py, easier to find/set/check/keep
consistent if they are all defined once at the top of the file.

Generalised initialisation actions in ode.py (e.g. for when 2 point methods
need an additional starting value to be generated).

Actual time integration is now in a new seperate function: _odeint, which
allows more precise control over setup, useful for
testing/experiments. odeint() is now a wrapper with a nicer interface,
default setting etc.

Timestep rejection now working and tested in unit tests. Implementation is
still not perfect...

Added error checking on timestep scaling: check that dt is within certain
bounds and that it is not changed by too much in a single step.

Solver now always works with numpy arrays of values (even for 1D problems),
makes some things simpler.

Updated llg.py to work with changes.

Somehow I managed to break adaptive bdf... not sure how yet...