Simplify pubsub code

The variable numbers of arguments are simply not used, it would be
vastly preferable to just enforce the interface that is actually used.
Remove file extensions from require

Whether a file is `.js` or `.jsx` is an implementation detail we should
do our best to avoid relying on.  By having the .js or .jsx extension
be added implicitly, we can reduce the amount of code that needs to
change when we add or remove the extension.
Update and simplify README.md
Make requiring diagnostics side effect free
Merge pull request #67 from ForbesLindesay/tidy-up-code

Tidy up code