events: additional type check for addListener

Check both passed args to addListener.

Place var at beginning.

Switch warned to _warned. Seemed inconsistent to have some internal
properties start with _ and others not.
events: emit cleanup

Cleanup check logic. Place vars at top. Remove PROCESS.

This commit is to make the next couple commits a lot easier to
implement.
events: remove once() listener wrapper

The wrapper around once methods will make it difficult for binding
listeners. So instead a flag is set to let emit know the listener needs
to be removed.

The additional check in emit causes a small performance hit,
but not as much as will be gained after the binding change.
events: bind listeners

Calling bound listeners is much faster than using call, and while .bind
is ~47x's more expensive initially it's generally the case that the
listener will be called many more times than that.