ClientProviderFactory is aware of InternalClientProvider in system

Add `ClientProviderFactory` as class listener and maintain a list of available `InternalClientProvider`'s. Add unit tests.