Feature/new session listener

Here's the PR for attaching a Listener to activeSession.  For backwards compatibility, activeSession still makes a Listener and attaches it.  This will probably leak a little memory (since it attaches callbacks to the events), but only once, and we'll remove it when we do the next major version update.

@jjackson26 @swarajban 
We should create a PT task to change these `publishEvent` calls to `emit`