Signature changes from Update(k, v) to Update(batch, k, v) returning
(k, v, KVHistory). KVCache returns a real page table mapping positions
to buffer slots. RecurrentCache returns empty KVHistory from Update.
Replace Cache.Offset() with Offsets() returning per-sequence offsets.
Add KVHistory type to mlx package.