An implementation of messaging [IMMUTANT-428]

This covers most of the features we have currently. It doesn't yet
handle remote brokers or reconnection.

It has a few differences:

* `start` is now called `endpoint`
* connections are now first-class, and can be managed by the user for
  performance
* subscriptions are also first-class, and take affect when created,
  not on the first `receive`/`listen` call
* stop-like fns (`stop`, `unlisten`, `unsubscribe`) have all been
  replaced by `stop`

This needs more docs, tests, and bringing over more functionality from
1.x - remote stuff and hornetq specific options.