Do not attach event handlers to the object instances

Instead, keep them in a internal weak map. This is a first step towards
fixing #6. There is still one property which avers attaches to objects:
_listenerId. We can get rid of that once Chrome implements iterators or
Map.prototype.forEach.
Add documentation in the form of a HTML page