Feature pubsub listener inversion

lib.PubSub now has two additional methods inspired by the Backbone events API - `#listenTo` and `#stopListening`. All listeners created by `listenTo` will be removed all at once when `stopListening` is
called. Being able to remove all the listeners in this fashion makes listener leaks easy to avoid when repeatedly constructing/deconstructing objects.

There are tests for these new methods in a folder called `tests`. The method interfaces are documented with JSDoc style comments within PubSub.js.
why use a uuid instead of an incrementing integer?  The latter seems simpler