MODE-2268 Changed the ChangeSet implementation to expose the `sessionId` together with the `processId` and fixed the behavior of non-local event listeners.

The only thing that was exposed (and checked) up until now was the `processKey`. However, this is unique per cluster node and has _the same value_ for all the sessions on a repository on any given cluster node.
This PR also exposes the `sessionId` which is unique per-session and is read from the `ExecutionContext`.

If the change is ok, the issue will require a separate PR for the `3.x` branches, as there are significant changes & differences between the 2 codebases and affected paths.