Logging improvements

Looking into some production issues has been tricksy since log messages don't show consistent or useful information. I would like to see things like the contained MessageType (if available), the MessageId, CorrelationId and ReplyTo.

I also noticed the construction of BrokeredMessages is inconsistent so I've started by pushing all the construction through a factory to create an intersection point. More commits to come. :)