implemented deferred.notify + misc improvements

I really like your work on this. I use it in the browser as a drop-in replacement for either Q or jQuery.Deferred. The only thing missing for me was `deferred.notify`, which is now implemented with minimal impact (I think).

I also simplified the code so it can run both in Node and in the browser without the build step.