Some extra machinery to support the new conversation lifecycle.

This is used by #428. I screwed up the issue number in the branch name. :-/