Iterative Flattening Search for the Flexible Job Shop Scheduling Problem