This change breaks the dependency of `VsSolutionUpdatesProjectSnapshotChangeTrigger`
on `ITextBufferProjectService`. The small amount of VS shell code needed
to retrieve a project file path from an IVsHierarchy has been inlined.
The larger part of this change is a refactroing of the tests for
`VsSolutionUpdatesProjectSnapshotChangeTrigger`. These tests now
simulate the same threading behavior as inside Visual Studio.
Finally, I've added a vs-threading analyzer configuration file to our
Visual Studio assemblies to allow our
`JoinableTaskContext.AssertUIThread()` extension method to be considered
by the VS threading analyzers.