----------------
- Fix possible unresponsiveness of message handlers which occurred after an
exception in the worker. The exception caused a counter under-run which
prevents switching channels. The counter is no longer bound to the
transaction but to the message handling.
- Add a save guard which kills the whole process if the reference counter on
the channel falls below zero.
- Acquire the channel before putting a task to the worker queue to prevent a
possible race condition.
- Release the commit lock if ``tpc_abort()`` fails. So the next ``tpc_begin()``
does not wait forever while trying to acquire the lock and thus blocking the
whole process.