Creates and returns a unique source control provider that will be owned by the caller. This allows subsystems to own their own source control connection in addition to the general connection used by the rest of the process. This could be to avoid the user changing settings that the subsystem needs, or so that it can open a connection with an entirely different source control type if required.