Unfinished work but need to store it...

Trying to fix semi implicit llg but it's taking a while and need code to be
safe so doing a commit now even though it's not finished.

* General

** Add { } around some one line if, for etc. constructs
   Fit with oomph-lib standards, slightly less chance of errors.

* MagneticParameters

** Change initialisations to set the "simple llg" parameters.

** Add debug coeff to disable exchange b.c.

** Attempt to clean up normalisation (especially of exchange)
  Not entirely sure this is right yet...

** Add some "const"s where needed

** Fix values of gamma
  Had wrong sign in exponent, makes no difference until we want to return
  to physical units.

* ImplicitLLGProblem

** Add adaptive timestepping

** Add face elements for exchange b.c.s
   and associated functions, mesh, access functions etc.

** Add option to renormalise or not

** Add a few output functions

* MicromagneticsBoundaryElement

** Remove some uneeded functions

** Do not add more dof types for boundary

* MicromagneticsElement

** Add local coordinate input to get_applied_field
   Needed if we want to include elemental data in applied field, e.g. h_ms
   from other elements.

** Add normalised_divergence_m(...), does what it says

** Remove some unused functions

* MagnetostaticFieldEquations and descendants (new)

  Class based on PoissonElement to calculate just the magnetostatic field
  (the proper multi-physics way of doing things, rather than rolling
  everything into a giant new element).

  Includes functionality to pass data back and forth between this and
  SemiImplicitMicromagEquations, needed for using div(M) in poisson and
  grad(phi) in micromagnetics. This isn't "nice" but I don't know how else
  to do it.

* MagnetostaticFieldFluxElement (new)
  Similar to MagnetostaticFieldEquations: just overload the get_flux part
  of PoissonEquations to also add m.n (got via a micromagnetics element).

* SemiImplicitMicromagEquations (new)

  Class based on MicromagneticsEquations.

  Only change is overloading applied field to also get a magnetostatic
  field from a MagnetostaticFieldEquations based element.

* MicromagneticsFluxElement

** Removed dshape_dtest
   It was missleading - actually gets the shape functions for bulk
   element. Also may have been wrong.

** Comment out phi parts of jacobian and residual
   Since they are now in seperate elements: make sure they aren't what is
   breaking everything.

** Rewrite of fill_in_bulk_contribution_to_face_jacobian function
   Hopefully "less-wrong", possibly still not right though.

   I was using Jacobian of transformation for bulk element despite
   integrating over the surface only.

   Recalculated and re-coded the Jacobian calculations, simpler form this
   time.
* BoundaryElementHandler

** Added edge angles to boundary matrix
   Edges are not Lyapunov surfaces so we need to add a contribution to the
   boundary matrix to account for their sharp angles.

   Although actually Milan said they were Lyapunov so maybe triple check
   this...

* GenericPoissonProblem

** Added templating by flux boundary condition element

** Don't set up boundaries until build() is called
   Makes things more robust since it doesn't matter if you specify b.c.s
   before the mesh.

* SemiImplicitHybridMicromagneticsProblem (new)

  A problem class, does what it says on the tin...

  Not finished verification yet.

  Implicitness: calculate magnetostatic fields at current time then
  implicitly timestep the LLG equation with that field applied (but others
  included in implicit calculations).

* Tests:
** bem_field_test.cc
*** Use get_non_boundary_node from Mesh
    Instead of including such a function in this class.
*** Include input mesh in git
    For easier testing. It's only tiny.
** llg_exchange_test.cc
*** Not working at the moment
    Been playing around with llg code so the results don't match the stored
    results. Fix when possible!

*** Changed some parameters to hopefully result in a better test
** simple_rigorous_exchange.cc (new)

*** Test LLG with only exchange field with steady state solutions.
*** Takes too long to run at the moment...