perf: merge decode batch for 10x throughput
- merge all active decode tasks into single forward pass (was grouped by next_pos)
- add per-task write_positions to ContiguousCacheView for correct KV writes
- override ContiguousCache.task_cached (base returned 0, caused prefill loops)
- add --cache_len/--frequency_penalty/--rep_window to generate.py
- chunked batch processing with tqdm progress
bench (1.2B model, 128 prompts, 64 tok, batch=128):
before: 77.2s, ~111 tok/s
after: 7.1s, ~1210 tok/s (10.9x)