This attempts to hide all our locking machinery so that users don't have to care. To this end,
locked is added to the value-scope notation for lambdas and recursive functions, and the tactics wp_rec and wp_lam are enhanced to unlock properly.
The main open question is: How can we figure out automatically what to unfold? The heuristic I cam up with fails in barrier_client because there, we have a value parameterized by something on the Coq level.
Maybe a more viable alternative would be to add locking to the coercion that embeds values into expressions?