Support bcs with multiple regions in _needs_reassembly

This check was previously assuming that a DirichletBC only has a
single integer as its sub_domain.
Add test for matrix assembly with multi-domain bc