Embedding Complexity and Discrete Optimization I: A New Divide and Conquer Approach to Discrete Optimization