Change the newListener api.

This breaks from nodejs' eventemitter pattern, but it doesn't seem convenient to pollute the '**' event stream with newListener events.
Satisfy the newListner api, and all.
refactor RemoveAllListeners to reuse removeListener.
Add constraints for offNewListener function.
Satisfy offNewListener constraints.