Dont force component implementations to handle flowEvent differently from other payloads
Description
Currently the flow invoker checks the signature of a producer to see if it wants to receive a FlowEvent rather than the flowEvent's payload. This is not great and even worse where the producer supports invoke(T message) and we cannot tell.
Better to completely hide this in the flow invoker and always assume the flowEvent payload, unless this fails, then try the full flowEvent and cache the fact so we know for subsequent invocations.
Currently the flow invoker checks the signature of a producer to see if it wants to receive a FlowEvent rather than the flowEvent's payload. This is not great and even worse where the producer supports invoke(T message) and we cannot tell.
Better to completely hide this in the flow invoker and always assume the flowEvent payload, unless this fails, then try the full flowEvent and cache the fact so we know for subsequent invocations.