Add support for non-ephemeral leases in the semaphore recipie

This is useful when the task you are tring to limit concurrency (such as a deployment) when a failure should retain a lock.