fix: update loop URLs and API contract in control.html and viewer.html
POST /api/viewer/<cam_id>/loop {action,exposure} → POST /api/<cam_id>/loop {exptime}
stop: POST {action:stop} → DELETE /api/<cam_id>/loop
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>