Invert inheritance order in Constraint-based contact classes ref #2816

The intermediate class SparsityBasedContactConstraint overwrites
computeJacobian to fill _connected_doc_indices.  Next step is
to split that code out into a separate method so that the other code
in computeJacobian isn't duplicated.
Create getConnecteDofIndices() method ref #2816

Move all the code that populates _connected_dof_indices into a
separate virtual method, and have the derived class just overwrite
that method rather than computeJacobian().