Make Hutch::Broker#publish accept message properties

We make sure that persistent: true is not overriden until you
explicitly do so. Routing key, timeoust and message id are currently
non-overridable, which makes sense with Hutch's opinionated nature.

There seem to be no integration tests for the method so I had to replicate
a mock-based test which I'm not super happy about but the change is trivial.

Fixes #50.