Add test assembling a form with bcs and then without

The second time round, we should not get the same as the first.
Fix matrix assembly for equal forms but different bcs

Previously, if the form we were assembling hit the matrix cache for an
already assembled matrix we would return that and not reset the boundary
conditions on it.  This was the wrong thing to do.  Equally, when
passing the matrix to assemble in as a tensor argument we would not
reset the boundary conditions either.  So do that.
Merge pull request #73 from firedrakeproject/fix-mat-caching

If we hit the mat_cache, or pass the tensor in, we need to reset
boundary conditions.