Middleware to set provider field on messages

This needs at least two versions (or one version with at least two modes, although I prefer splitting them):
 - always set the same statically-configured `provider` value
 - select `provider` value based on `from_addr` prefix

It would be nice to set the provider on outbound messages too, although because of the way we layer middleware we might need two middleware to set the provider in a way that is always accessible to another piece of middleware in the stack?