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