Add support for simple linear DOF constraints

This adds support for linear DOF constraints in the boundary conditions. Currently the only API routine is for setting a set of nodal DOFs to be equal but others could be added as needed and the boundary conditions routines support making a DOF an arbitrary linear combination of other DOFs.