A hard-constraint time-stepping approach for rigid multibody dynamics with joints, contact, and friction