Merge branch 'gh97' into 1.6.x
crete modelFactoryProvider interface and default implementations
create ConfigurableModelFactory
update ConfigurableModelFactory implementation
move injection & caching logic to AbstractConfigurableSingleStrategy
add unit tests for ConfigurableModelFactory
fix merge conflicts