#listeners returns an object which delegates to a collection of listeners plus: 

* exposes an `add` method to add a listener(s)
* takes a block which is instance_eval'd allowing calling of `add` within the block

[13]
stub `to_a` to fix spec in MRI 1.9.2
fix merge conflicts with master