Topic based channels

Channels may be resolved by name along with a topic, 'channelName!topic'.

Introducing two new channels:

`bus.excahngeChannel` as a basic exchange of messages for a topic key.
Subscriptions are matched literally to the topic header.

`bus.topicExchangeChannel` an exchange channel with AMQP-style topic
binding. Topic names are dot-delimited words with wild cards. '*'
matching exactly one word and '#' matching zero or more words.

A channel resolved with a topic will amend `.send()`, `.subscribe()` and
`.unsubscribe()`.  The topicized channel is returned while the main
channel is not affected.

send:
Messages sent to this channel will include a 'topic' header with the
topic value.

subscribe/unsubscripe:
The topic is prepended to the arguments. A handler is subscribed to a
topic within the channel.