fix(d3d): exit normally when the window closes mid-frame
Closing the game window only exited cleanly when the close landed during a Swap. If it landed during a clear, a buffer reset or a gamma update, that command saw RECOMP_D3D_PRESENTER_CLOSED and the runner stopped with an error code instead.
All four presenter submissions in the frame adapter now route CLOSED through one helper that resets the adapter and stops with the normal host-window-close exit.
Validation: public-ci checks pass locally (tools tests, export verify, 14/14 ctest).
Summary by cubic
When the game window closes mid-frame, only a swap exited cleanly; a close landing on a clear, buffer reset, gamma update, or memory release saw RECOMP_D3D_PRESENTER_CLOSED and stopped the runner with an error code instead of the normal host-window-close exit.
All presenter submissions now route that error through one helper that resets the adapter and exits with the normal host-window-close status. The presenter also retains its last error so a memory release after a close exits cleanly too. Tests cover the memory-release path and both draw-seam paths (indexed and UP vertices).