VCF Upload App prevents concurrent uploads.

When starting mutiple VCF upload jobs, `LockController.requestLock()`
would throw a `LockException` for the second VCF upload job, as the first
one would be holding the lock, and adding the variants to the database.

This was reported in #306 Upload new VCFs while the DB is locked.

Essentially, the VCF processing jobs were not queued properly, and they
would compete for resources. There are multiple ways to fix this:

1. Allow jobs to wait for the lock, blocking their thread until the
   lock is available.
2. Implement a VCF job queue, with a worker that works on a VCF at a
   time, and any new uploads would be added to the queue.
3. Prevent concurrent uploads, and display an informative notice to the
   user

Option 2 is most desireable, as it could be backed by an in-database
queue representation, allowing jobs to persist even if the server
crashes.

However, Jim's refactor is already implementing a sort of job queue.
Instead of writing a competing feature, under Marc and Jim's strong
advisement I have implemented a notice screen in the Upload app, that is
shown when the database is locked. The screen is removed once the
database becomes available. The lock is queried at 3 second intervals in
a background thread prevent excessive loads, while keeping the UI
responsive.