Scaling - initial draft 

Marek please review the code
Maybe optimization strategy can return list of tmpl+flavors (scale up) to be instantiated or list of tmpl+flavors to be terminated (scale down). Inside optimizer there should be no optimization logic only invoking optimization flow - all optimization logic should be inside strategy.