LSIF: Track and determine closest commit
Created by: efritz
This modifies LSIF queries to use the closest commit for which LSIF data exists, rather than the exact commit the user requested. This implements half of RFC 32: Nearest Commit Queries.
This has two major changes:
- The LSIF worker now queries the gitserver for commit data about a repository after upload and updates the commit lineage information in the cross-repo database
- The LSIF server will do the same thing if it does not have lineage information for that particular commit. This will lazily populate the table without needing to poll gitserver (see @chrismwendt's suggestions in this conversion for additional context).
- The LSIF server now determines the correct commit that has LSIF data on all queries. Apart from the SQL queries used to determine the data, the only changes in the server is a function call before opening the correct database file.
See the new updates in the xrepo.md file for change to the cross-repository data model (two new tables were added).