Add discard_only opponent_policy + analyze.py merges
- Plumb discard_only through config validator and interleaved_traversal.
Bypasses PolicyRequest for opponent nodes, uses DiscardOnlyBot via
Snapshot. Recursive scheduler explicitly rejected (Cython unchanged).
- analyze.py: merge per-opponent eval plots into multi-line plots, add
twin y-axis support (PlotSpec.secondary_metrics), per-axes translucent
legends instead of one global legend, add avg_game_length to GameFlow.
- Tests: discard_only smoke run, validator accept/reject, all 57 pass.