simplify locations panel code, show partial results
Created by: sqs
- Add tests for HierarchicalLocationsView, especially for loading, partial, and empty states. Most of the added line count comes from the tests.
- Simplify the API (TextDocumentLocationProviderRegistry#hasProvidersForActiveTextDocument).
- Partial results (i.e., when a non-empty array of locations has been emitted by a location provider but the observable is not yet complete) are now shown in the locations view. Previously, no locations were shown until the observable was complete. Showing partial results is important when cross-repo references are shown because those typically take longer to load than same-repo results, and we don't want the user to need to wait.