Enables the intercepting of the invocation of the "user lambda" in a Stage, with ability to wrap the
(and thus modify any reply, request, next or initiations) and/or modifying state and
message - or even take over the entire stage. Wrt. changing messages, you should also consider
Default implementation is to call directly through - and if overriding, you also need to call through to get the
actual stage to execute.
Pulled out in separate interface, so that we don't need to invoke it if the interceptor doesn't need it.