Render the plan as a dedicated card in chat (#2516)
A PlanCard replaces the generic tool card for successful update_plan
calls (matched by uuid, so a failed call keeps its error card), coalesced
to one live card per message that takes the latest update's stream
position and is never folded into the collapsed tool summary.