This PR adds support for dynamically creating a disco service when

properties will not be known until a later time. It introduces a default constructor
but keeps it private and then exposes an interface of a DynamicDiscoServiceWrapper
that provides fluent with statements to construct a DiscoService, in addition it
exposes init, start and stop delegating to the private member instance of DiscoService.
Can we keep this one final?