BUG: Error in DBCs for l.h.s; new BC approach.

* There was an error in the l.h.s when Dirichlet BCs where being
applied. The first row should read (1, 0) of the coefficient
matrix, instead it was set to (0, 1), this caused a systematic
error (a shift) by a small amount.

* Added Poisson equation test for the model (it should reduce) to
the Poisson equation when a=0 and then there is no transient term.

* Discovered that the general BCs approach is only valid when the
equation has a transient term (i.e. we are solving an initial
value problem). For a pure boundary condition problem, such as the
Poisson equation different values are needed for the alpha and
beta boundary condition terms.

* Added new methods `set_has_transient()` and `set_reaction_term()`

* `set_has_transient()` sets an internal flag that will modifies
values in the boundary condition masks such that the can be used
with boundary value problems.

* `set_reaction_term()` gives the model an array (with number of
elements equal to the number of cells) which describes reactions.
Previously all details of the reaction term where dealt with by
the user outside of the main model. However, for boundary value
problems the value of reaction term needs to be known and set in
the beta (boundary condition mask).
New docs explaining new BC system.
New docs explaining new BC system.