Improve transactional handling of messages

This is 1.0.0.rc1. Once we've tested this in production for a day or two, let's release v1. I've removed the legacy syntax as part of this.

cc @malcyl, @ccare