Move to java.util.concurrent.locks.Lock (Was: Add concurrent.Lock#doWith)

A method I have used on a few occasions to eliminate the boilerplate acquire/release when executing simple statements in a locked environment.

Review by @phaller please!