Fix a bug with concurrent invocation of session triggers.

A session trigger would always use the same coroutine, for both connect and
disconnect, as well as for multiple sessions.

If a trigger runs insert() or update(), anything that yields the current
coro, the coro stack would get corrupted for the next parallel invocation.

Use an own coroutine for each invocation of a session trigger.