Make Exchange#publish api compatible with Bunny

MarchHare requires most options to be put under a `:properties` key
rather than placing all options at the top level like is done in the
Bunny gem.  This change makes the `:properties` key optional, allowing a
user to switch a bit more seamlessly between Bunny and MarchHare gems,
while maintaining backwards compatibility in MarchHare.

If the `:properties` key is present, its value will be used as the
properties; otherwise, the remaining options (after removing
`:routing_key` and `:mandatory`) will be used as the properties.