Add the Split plugin type: choose which live flows a node takes
Splitting becomes a pluggable node policy, the outgoing counterpart to a join. After the engine filters a node's outgoing flows to the live ones (those whose condition holds), the node's split decides which of them the token follows:
- all (the default): take every live flow -- a parallel fork, or an inclusive split when the flows carry conditions.
- first: take only the first live flow -- combined with conditions, this is the exclusive choice.
Split and condition compose cleanly: conditions say which branches are eligible, the split says how many. A node with no split takes all, so existing definitions are unchanged. Custom splits (weighted, random) are now just plugins.
The node config gains an optional split ({plugin, settings}); the engine
applies it in both the normal advance path and a firing gateway's outgoing.
Kernel test covers first taking one branch and first + conditions giving
the exclusive choice.