ClientProviderFactory is aware of InternalClientProvider in system

Add `ClientProviderFactory` as class listener and maintain a list of available `InternalClientProvider`'s. Add unit tests.
Use the keys of the map here to do the match