Make Exchange#publish api compatible with Bunny

MarchHare required 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 used as the
properties; otherwise, the remaining options (after removing
`:routing_key` and `:mandatory`) will be used as the properties.
Add spec for exchange.publish with top-level props
Merge pull request #50 from devin-c/bunny_publish_compat

Make Exchange#publish api compatible with Bunny