add LockManager to support both

```
obj, lock = Foo.get_locked_obj(id)
```

and

```
with Foo.get_locked_obj(id) as obj:
    ...
```

syntaxes
add option to couch doc locking to degrade gracefully when redis is down