LSIF: HTTP endpoints to view job statuses
Created by: efritz
This PR adds endpoints which can be used by admins and users (once proxied) to view the state of jobs. This includes endpoints to
- list all {queued,active,completed,failed} jobs
- get details about a particular job (logs, status, progress, failure message, stacktrace)
This PR also adds a query parameter to the LSIF upload endpoint to cause the request to block (up to a given timeout) for the work to finish (successfully or not).
Additionally, this PR schedules a new job on an interval to ensure that job data in redis expires after a configurable max age (7 days by default). This will be a mechanism by which users can see the reason an LSIF upload failed asynchronously without adding (and never removing) from the redis keyspace.
See RFC 46.