Combining Discrete and Continuous Reasoning for Robot Motion Planning in Complex Domains