[WIP] Add function space class.

The functionSpace class sits between State and Patch.
A function space lives on a patch but also has a number of DOFs.
It is intended to match the PETSc DMDA abstraction.
This will allow us to reduce the number of DA's and Vecs we use,
by reusing DA's from the main State object in the _register objects
in SharpClaw.

It is also anticipated that this abstraction will be useful when
implementing DG finite element methods.

@jedbrown please take a look and let me know if this is what you had in mind.  I think there are still some improvements to be made in terms of not creating so many local vectors.