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.
Call JointState::updateConstraint() to create the constraint.  The FBXJoint::rotatinMin/Max values are passed to a factory in AngularConstraint which will figure out what type of constraint to create and returns a pointer to it, or NULL if none is required.