acquire static method
Takes the lock on project. Throws ProjectBusyException when
another change holds it, naming the holder, the lock file and when it
goes stale.
Implementation
static ProjectLock acquire(JustProject project) =>
tryAcquire(project) ?? (throw ProjectBusyException(_busy(project)));