Make GraniteMessage's constructor non-public
Add a constructor to Message and turn MessageBuilder mutable