Added the ability for the configuration factory to be customized

This change will allow you to use custom configuration formats as well as intercept
the configuration generation to change it programmatically at runtime prior to application configuration.