apply joint constraints during IK

Adding AngularConstraint base class and variants for enforcing angular constraints on elbows and wrists:

HingeConstraint is used whenever rotation is limited to a single axis, which is often the case for the elbow.

ConeRollerConstraint is a conical swivel that has limited roll and is used for the hands.  The angle of the cone (from central axis to outside surface) is the average of the pitch and yaw ranges.

Also added AngularConstraint::softClamp() which tries to split the difference between the targetRotation and the corresponding hard clamped position.

Re-enabled the gravitational term to the IK algorithm because some models have default poses that don't look good when mixed with naive IK.
Hrm... the diff showing up here on github appears to be confused.  This change (and most of the other changes visible here) were already merged into upstream/master yesterday.  I just pulled from upstream/master and verified this.  Perhaps the reason github is confused is that I merged yesterday's PR with some new work before that PR was pulled into upstream/master.  In any case, I'll try to point out the new work amid the diff.