Combining Declarative, Procedural and Predictive Knowledge to Generate and Execute Robot Plans Efficiently and Robustly