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. There is an example of a "broadcaster gem" here: https://github.com/krisleech/wisper-celluloid

The idea is that we also have `wisper-sidekiq`, `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)`.