a8n: Persistent queues and workers for CampaignJob
Created by: ryanslade
When campaign jobs are created they are no longer run during the request phase. They are created and a background process monitors for pending jobs. This allows other frontend instances to pick up jobs and also protects us against frontend crashes.
It is implemented using row level locking and polling Postgres for pending jobs.
Part of https://github.com/sourcegraph/sourcegraph/issues/6723