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
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