v0.1.11: Eliminate c=8 poll contention bottleneck

Split endpoint mutex (ep.mu) into mu + timer_mu:
- mu: connection map, accepted queue, retired list
- timer_mu: timer queue, next_timer_id

Handler threads calling scheduleTimer/scheduleConnPto/cancelTimer
no longer contend with poll's packet processing. Phase 4 releases
mu between batch iterations for fair scheduling.

Throughput improvement:
- c=1: 3,500 → 1,200,000 ops/s (340x)
- c=8: 60,000 → 585,000 ops/s (10x)
- c=8/c=1 scaling: 45%

Full test suite: 0 failures, 1909 passed, 500 skipped