Added the OptimizeStrategyOrder class to define in which order which optimize strategies must run. Changed the intermediate code optimizer to use the new OptimizeStrategyOrder class.
This does have as consequence that all optimizers defined in the order are now run on every AST node with children, increasing compile time, but decreasing the run time for the compiled program.