work with node.js, component, and browserify

Uses a different component for EventEmitter which has the same API as node.js so we can support browserify.

fixes #15