INT-3309 Pluggable MessageBuilder

Add a context-wide `MessageBuilderFactory` and use it instead of directly using the static methods on `MessageBuilder`.

Implement a `MutableMessageBuilder` that reuses the same message and allows modification of its heades.