initial cut at lock implementation
(paired with @rockstar)
lintylint.
Move silverberg.locks to silverberg.lock
Refactor BasicLock, add tests
BasicLock now inherits from object
Superficially respond to @dreid's review.

  - Tests are still not working (assert_called_once doesn't error)
  - Some of the queries need to be tested.
Fix the tests!
Make the TTL configurable; add documentation for what BasicLock actually does
Add with_lock context manager and accompanying tests
Don't fire the BasicLock.acquire deferred until the lock is verified as acquired.
Use timeuuid-type in Cassandra and uuid1 for claimId
Defend against subsequent calls to BasicLock.ensure_schema causing errors.
Merge from trunk
Have BasicLock._verify_lock actually check the response in a proper way after merge.

Additionally, have the tests reflect data similar to what an actual transaction
would look like.
Fix lint
pass.
Include retry algorithm in BasicLock.acquire, with accompanying tests
Add docstrings.

In the process, I discovered that it might be a good idea to use the new
'acquire' retry options in the with_lock implementation, so implement that as
well.
Use trap.
Update the docstring for BasicLock to reflect that we're using timeuuid now