Per operation lock instances.

Implement the `Locker` class that gathers up lock instances created from
a lock queue. The isolated lock instances allow us to track the
acquisition and release of locks for a specific operation and fail fast
by asserting that all the locks held by a specific operation have been
released, and that a release of a shared lock release and acquisition
obtained by the current operation, not some other operation's shared
lock. Essentially, that all the acquisitions and releases balance out
for each operation.

Not yet performing the actual assertion.

See #262.