Contact and Impact-aware Manipulation