Use project locking to parallelize tasks with async work - Allow tasks to start while running tasks are waiting on async work - Lock on the entire build when --parallel is not used - Discontinue handling of @ParallelizableTask