iceFailed event
src/EventEmitter.js: inherit from Node's EventEmitter
src/EventEmitter.js: implement event initialization/validation
src/SIP.js: require EventEmitter correctly
src/EventEmitter.js: don't init _validEvents in constructor

Since the constructor might not be called when EventEmitter is extended,
methods should work if _validEvents is undefined.
src/EventEmitter.js: implement checkListener

also rename filterMethod to filterFluentMethod
test/spec/SpecEventEmitter.js: try not to modify internals when testing
test/spec/SpecEventEmitter.js: remove bad anti-method tests
src/EventEmitter.js: filter the 'on' method
src/EventEmitter.js: .initEvents() clears existing events/listeners
test/spec/SpecEventEmitter.js: call .initEvents() before .on()
test/spec/SpecEventEmitter.js: fix 'only accepts functions' test
src/EventEmitter.js: implement .off()
test/spec/SpecEventEmitter.js: fix 'removes the matching listener' test
test/spec/SpecEventEmitter.js: fix 'removes once listeners' test
test/spec/SpecEventEmitter.js: remove setMaxListeners tests

It now works like Node's EventEmitter's setMaxListeners
test/spec/SpecEventEmitter.js: fix 'removes once listeners' test
test/spec/SpecEventEmitter.js: remove 'binds to third argument' tests

listeners should be explicitly bound to their objects before passing to
EventEmitter methods
src/Session.js: the following methods correctly return `this`:

- failed
- rejected
- canceled
- accepted
- terminated
- connecting
src/Subscription.js: .failed() correctly returns `this`