ClientProviderFactory is aware of InternalClientProvider in system

Add `ClientProviderFactory` as class listener and maintain a list of available `InternalClientProvider`'s. Add unit tests.
Exchange this list for a map holding 
`providers<Class<? extends IInternalClientProvider>, InternalClientProvider>`