Write transport messages to message store in RTD

The routing table dispatcher relies on stored outbound messages containing full routing information for its ability to route events back along the same path the outbound messages took. We currently rely on middleware to store these messages, but that's inefficient if the middleware is on the dispatchers (because we're storing messages unnecessarily) and a latency and reliability risk if the middleware is on the transport (because we lose the concurrency from the number of RTD workers and it's easy to misconfigure individual transports).

Given this, it seems reasonable for the routing table dispatcher to write each message to the message store before publishing it to a transport. (We probably also need a config option to disable the write in case we need to switch back to middleware for some reason.)

We can't do a similar write for messages to conversations and routers because the RTD doesn't load those objects and therefore can't include batch information.
Ok cool. A bit meh that we need to have that duplication, but can't think of a better idea.