factory: add AutoStartable support + warehouse providers to chain factories

This will be used to provide support for application wide components which are unique per server even when per request factory is used.
servlet: fix: customizing server id without registering it before fail
core: support autostartable server wide components

AutoStartable components will be created only once per server, even when using per request factory
factory: trivial: move usedServiceLoader field declaration for cleaner code arrangement
factory: trivial: move getWarehouse method for cleaner code arrangement
factory: add factory registry
factory: improve error reporting when a class instanciation fails during serviceloader due to dep class not found
core: rename appConfigSupplier, to distinguish it from application specific config
factory: review how metrics is provided, to make it overridable using components mechanism
core: introduce server wide factory instance and RestxMainRouter

- allow to have some components which are not disposed at each request when using a per request factory mode
- allow to make metrics and eventbus components at server scope like any others
- allow to access this factory with Factory.getFactory(serverId)
- allow to access the router with RestxMainRouterFactory.getInstance(serverId)
core: settings: add support for Optional return type in settings methods
monitor-admin: setup jvm metrics and jmx + graphite reporters
monitor-admin: add some jvm metrics