Implement the missing parts of the DOLFIN adaptor
Introduce the idea of "hooks"

These are user-defined functions that are called at specfic events, for example
at each optimsiation iteration