pass EventContext explicitly into AlgoExecutionTask and Algorithm
in order to not have re-entrant Algorithms stomp on each others' EventContexts, we need to isolate the EventContext from the Algorithm, and move it to the AlgoExecutionTask. We can then pass the EventContext explicitly to the tbb::task, instead of carrying it via the Algorithm, which would fail for re-entrant Algs. This also requires a change to the signature of ForwardSchedulerSvc::promoteToExecuted.
We also make the EventContext* of the Algorithm const, to prevent any modification from inside the Alg.