Discarding a translation's auto-save deletes the wrong language (discard URL has no langcode)
### Overview
When a translatable Canvas content entity has pending auto-saves in more than one translation, discarding one translation's change deletes the wrong translation.
The discard endpoint is `DELETE /canvas/api/v0/auto-saves/{entity_type}/{entity_id}` — it carries no langcode. `ApiAutoSaveController::delete()` removes the auto-save keyed by the entity's default language only. So discarding a non-default translation's change deletes the default language's draft instead, and leaves the intended translation pending.
The client already knows each change's language (every pending-change row carries `langcode`), but the discard request drops it. Without a langcode the backend cannot identify which translation the editor acted on, which also blocks correct discard scoping for symmetric vs asymmetric translation.
### Steps to reproduce
1. Enable content translation for a Canvas content entity (e.g. Page) with two translations.
2. Make a pending change in each translation, creating a per-translation auto-save for each.
3. In the review/changes list, discard the non-default translation's change.
4. The default-language auto-save is deleted; the targeted translation's auto-save remains pending.
### Proposed resolution
Carry the langcode in the discard endpoint so the backend can identify the target translation. Then scope deletion by translation mode:
- Asymmetric: delete only the targeted translation's auto-save.
- Symmetric: delete all of the entity's translation auto-saves, because they are propagated and published as a unit (see #3591596).
The mode is determined server-side from the field definition; the client does not currently know an entity's translation mode.
### User interface changes
None. The discard action deletes the change the editor selected, instead of always the default language.
issue