Fast and Feature-Complete Differentiable Physics Engine for Articulated Rigid Bodies with Contact Constraints