Replace the byte-size-based latency classifier with evidence-based
classification (recent input or a reply-eliciting terminal query), and
gate passive foreground drains behind a shared requestAnimationFrame
(with a 32ms fallback) instead of a zero-delay drain. This coalesces
bursts of tiny passive chunks into one xterm write per frame, cutting
renderer wakeups for streaming agent output while preserving immediate
echo/redraw and protocol-reply latency. Adds the design doc and test
coverage for frame batching, ordered flush-behind-prefix, and fallback
draining.