Check bcs when extracting maps on a FunctionSpace

When requesting cell_node_map, interior_facet_node_map or
exterior_facet_node_map on a FunctionSpace given a list of boundary
conditions, check that all of these are actually defined on that same
FunctionSpace.
Add tests for assembling with bcs on incompatible FunctionSpace
Check that Function a bc is applied to lives on same fs

If fs is an IndexedFunctionSpace and r is defined on a
MixedFunctionSpace, we need to compare the parent of fs.
Add test applying/zeroing bc to Function on incompatible fs
Properly convert value when setting a DirichletBC

When using DirichletBC.set_value, there was no sanity check or
conversion of the value passed in, leading to incomprehensible
failures then the DirichletBC was subsequently used.
Add test intialising/setting bc with Function on incompatible fs
Add tests for DirichletBC initialisation
Move bc checks when extracting maps into _map_cache
Merge pull request #172 from firedrakeproject/bcs-integrity-check

Improve integrity checks when setting boundary conditions

We were previously not checking whether a DirichletBC is applied to a
Function on the same FunctionSpace. Check for that and also make sure
that setting a DirichletBC after construction is properly converted.