Add lock module support

Adds basic support for the etcd lock primitive. Supports:

* `acquire()`
* `is_locked()`
* `release()`
* `renew(new_ttl)`
* attaching values to a lock

Does not yet support:

* getting current index or value for an arbitrary lock key
* deleting arbitrary lock by index or value
* renewing arbitrary lock by index or value

Although, these cases can be done by accessing internal values/functions. There is just no first class support for them.