Rework the message rendering API.

Now there is a message rendering chain, message does not create the
swift message by itself anymore. This make the message implementation
more independent and message generation more modular.