`new ShellSettingsManager` in the PackageSettings constructor
calls GetService, which might be a potential deadlock situation.
Also, to avoid calls to GetService that might deadlock, cache
the services we create in GitHubServiceProvider so that it returns
cached instances immediately and bypasses GetService.