frontend: Enforce upgrade policy
Created by: tsenart
This commit changes the frontend to enforce our upgrade policy on
startup. A versions
table is introduced, where the latest seen version
of a service in the Sourcegraph architecture is stored.
For the frontend, this is done on startup, before database migrations are run. If an admin violates our upgrade policy, the frontend will shutdown with a descriptive error, pointing to our documentation.
In a future PR, we'll ensure our upgrade policy is respected by
other services. This will be done by sending the service's version
along to the frontend on calls to api.InternalClient.WaitForFrontend
during a service's startup procedure, and having the frontend respond
with an error if the upgrade is invalid, which the service should handle
by logging and shutting itself down.
Fixes #7702 Follow-up in #8382