emitter.off(event, undefined) should remove all listeners

Allows for better integration with frameworks. 

I ran into it when unsubscribing from a reactive event, because we pass `fn` into `.off(event, fn)` regardless of if it's defined or not.