Attempt to move the cache hook

Since assemble now returns Firedrake objects, we need to cache the
thunk, not the assemble. This doesn't work yet.