Matrix free

A sketch of some matrix free stuff.  I have not hooked this properly into the existing solve mechanisms (so nonlinear won't work) but you can do:
````
mf = MatrixFree(a, bcs=bcs)

mf.solve(L, x)
````
to solve `a == L` and put the result in `x`.  This runs a matrix-free krylov solve, with jacobi preconditioning.  An explicit jacobi solve is reasonably straightforward to add if so desired.