Events instead of promises

The rationale behind this change is to avoid a semantic redundancy
in terms of session state between pending/resolved/rejected state
of the Promises with the state of the PresentationSession object.