MUM: A Technique for Maximising the Utility of Macro-operators by Constrained Generation and Use