Add test preassembling multiple matrices

If we preassemble the same form with different bcs we should get
different answers.
Remove matrix cache from solving

This was a legacy of when we still ran inside the Fluidity timestepping
loop and is causing more trouble than it's worth because determining
whether we should look in the cache or not is getting more complicated.
Implement top and bottom BC application for extruded RHSes

We need to build the list of dofs at the top of bottom of the mesh to
which the boundary condition should be applied, and special case in the
DirichletBC nodes property for top and bottom bcs.
Add extruded Poisson test with strong bcs
Implement BC application for extruded LHS assembly

In the extruded case, we can't fiddle with the maps directly to drop
matrix entries in assembly because that does the wrong thing for the
rest of the column.  Instead, add flags to the Map and iteration space
telling PyOP2 to generate code that fiddles with the map values
implicitly.
Test preassembly of multiple matrices for extruded problems with bcs

Similarly to the unextruded case, we should not hit a cache when we
preassemble different combinations of boundary conditions.