src/EventEmitter.js: simplify event listener firing
Use node's EventEmitter. Don't use init(More)Events or checkEvent.

Note that browserify takes care of providing the events module to the browser:

  https://github.com/substack/node-browserify#compatibility

You can run the following to see the code browserify provides:

  ./node_modules/.bin/browserify -r events | less
git rm test/spec/SpecEventEmitter.js

EventEmitter is already tested here:

  https://github.com/Gozala/events/tree/master/tests
implement SIP.EventEmitter.prototype.off
test/spec/SpecSession.js: define .logger on the constructed Session

This prevents tests from failing
  due to an artificially constructed Session's logger being undefined
    since the Session no longer has a logger by way of being an EventEmitter
src/Session.js: the following methods correctly return `this`:

- failed
- rejected
- canceled
- accepted
- terminated
- connecting
src/Subscription.js: .failed() correctly returns `this`
git rm src/EventEmitter.js
Use EventEmitter.listenerCount instead of emitter.checkListener
Use EventEmitter.removeListener instead of EventEmitter.off
Restore (but comment out) code listing event types.

This code was deleted in 1e12057, but might be nice to keep for reference.
Revert "git rm test/spec/SpecEventEmitter.js"

This reverts commit 337c0778f8aa1b7cdc400d99fc30ddd66f431269.
SpecEventEmitter.js: add checkListener/off shims, fix/rm invalid tests
Restore event lists and init(More)Events calls removed in 1e12057
src/SIP.js: EventEmitter.prototype.init(More)Events logs on emission

This makes the new EventEmitter log like the old one (except in tests)
use SIP.EventEmitter.listenerCount to check if >1 listener

This ignores the logging listener added by init(More)Events
extend EventEmitter using Object.create

This avoid sharing state between multiple instances.