fix(channel): round-robin consumer selection in fan-out master
Previously findReadyConsumer scanned from index 0 and picked the first below-cap consumer, so consumer 0 won nearly every tie and the first worker received a disproportionate share of items. Now the scan starts from a rotating cursor, giving every below-cap consumer a turn. Skip-based RR semantics are preserved — consumers at cap are still skipped so a saturated worker doesn't stall the pipeline. Adds a dedicated benchmark (examples/benchmark-dispatch/fanout.ts) that measures distribution spread at different volumes and under backpressure; tightens the fan-out tests to use the run.workers.map(assign) pattern so results don't depend on the pool's default balancer. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>