Moving Execution/ValidationStrategy.create to a separate StrategyFactory; in addition to SoC, it also cleans up the unused import hack
Moving strategies to a separate sub package of delivery
1. Importing strategies only in the StrategyFactory rather than at the package/__init__.py level; 2. Dynamically adding strategies which removes the need to update the list of imported strategies whenever a new strategy is added