Request Lifecycle Leak

Fix completed vLLM requests retaining multimodal payloads until cyclic garbage collection.

I run a long-lived Qwen2.5-VL service with prefix caching enabled. When I replay batches of multimodal prompts, the process keeps using more host memory even after those requests have finished. Eventually I have to restart the service; the growth stops when I stop this workload.

Please find and fix whatever is keeping the completed requests alive. A finished request and its large multimodal payload should be reclaimable through the normal engine lifecycle. This needs to hold for requests that finish normally, requests cancelled after a client disconnects, and streaming sessions once the client really ends them. A live request or a streaming session merely waiting for its next input must keep its multimodal data available.

Prefix-cache results must stay correct for the initial request and for later token updates. With multiple images in a prompt, matching prefixes can stop being reused as decoding continues. Prefix-cache reuse also goes wrong when a streaming session receives more input. Matching prefixes can miss the cache, while prefixes containing tokens dropped during the update can incorrectly hit it.

We need to keep prefix caching and multimodal input enabled. This should be fixed in the request lifecycle without adding explicit GC calls.