A Constraint and Sampling-Based Approach to Integrated Task and Motion Planning