add TSelf type parameter to EventEmitter and make chaining methods return it (see #8)