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