WIP: add a locking client

This is a rough draft of adding a client that locks the rets client on a
per method call to the client basis.

In the rets gem, this is completely abstract, it simply expects an
object that has a `#lock` method that accepts a name and a block.

Users of the locking client can then pass in an object that implements
this interface (lock-smith is a good sample, if you're happy with your
locking system relying on postgres/dynamo).