1) the framework shall provide a singleton instance of IsisConfiguration, which is an interface that provides immutable/readonly access to the config key/value pairs
2) the framework provides IsisConfigurationBuilder once during the early-bootstrap phase for r/w access to the config key/value pairs
3) first time any module requests access to IsisConfiguration, a singleton instance IsisConfiguration is built using the builder and the builder itself is no longer valid, meaning the framework denies any caller access to the builder
A benefit of this design is, that it is no longer required to pass around or hold instances of IsisConfiguration, because the framework provides a static means to get the current life-cycle's singletons for configuration.
1) cleanup and simplify bootstrapping code
2) no more configuration mocking for JUnit tests, instead use new internal Config API
3) removal of @PostConstruct methods that take arguments
4) removal of apache commons dependencies (really only required by the WebServer tool)