Multiple VCF uploads don't throw error anymore

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.

Essentially, the VCF processing jobs were not queued properly, and they
would compete for resources. There are two 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.

Option 2 is more 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, I have essentially exposed the
`ReentrantLock.lock()` method as `LockController.waitForLock()`,
specifically it's ability to suspend the current thread until the lock
becomes available.