Added option to use free boundary conditions: If any field has free boundary conditions on a boundary (xin, xout, ydown or yup) it sets a bool in Mesh to true (mesh->freeboundary_*); the derivatives in the guard cells of that boundary are then calculated using non-centred differences so that ddt(*) in the guard cells can be calculated. The free boundary condition then just refrains from setting either the field or the time-derivative in the guard cells on the boundary or boundaries where it applies, thus allowing them to evolve. The implementation does not yet extend to flux- or upwinding-derivatives and the interaction with staggered grids is almost certainly not correct. Also it is probably not as neat as it could be, derivs.cxx in particular could probably use tidying up somewhat.