Add heterogenously_constrain_element_vector

Plus a minor refactor in the hetero matrix+vector implementation
Heterogenous FEMSystem qoi_derivative constraints

This might actually give us a correctly constrained non-homogeneous
adjoint solution now.  At least any remaining bugs should be of the
form "trying to do the right thing wrongly" rather than "trying to do
the wrong thing".