Allow event broadcasting to be pluggable [#38]

The primary use case is to allow events to be broadcast asynchronously. 

I think this PR is ready enough for comments, its close to finished. 

Example broadcasters for [Celluloid](https://github.com/krisleech/wisper-celluloid) and [Sidekiq](https://github.com/krisleech/wisper-sidekiq).

The idea is that we also have `wisper-resque`, `wisper-activejob` etc.

Comments welcome.

Note: A couple of future PR's will allow `async` as an alias for the `broadcaster` option (since this is the primary use case). Also the ability to pass a symbol to `broadcaster` which can be mapped to an instance of a broadcaster, so we end up with something like `subscribe(MyListener.new, async: :resque)`.