Add "restore version as new latest" with deprecation support for AI Catalog items
## Summary
Allow item owners to restore an older released version as a new latest version, with the ability to mark the replaced version as
deprecated. Deprecated versions are excluded from consumer version selection.
Parent issue: gitlab-org/gitlab#596982
## Changes
### DB migration
- Add `deprecated` boolean column to `ai_catalog_item_versions` (default: `false`, not null)
### Model (`ee/app/models/ai/catalog/item_version.rb`)
- Add scopes: `not_deprecated`, `released`
- Allow updating `deprecated` on released versions (bypass `validate_readonly` for this field)
### GraphQL schema
- Expose `deprecated` field on `VersionInterface`
- Add optional `exclude_deprecated` filter to `ItemVersionsFinder`
### New service: `Ai::Catalog::ItemVersions::RestoreService`
- Copy `definition` and `schema_version` from source version into a new version record
- Bump version number (minor) from latest released
- Set `release_date`, `created_by`, update `latest_version` and `latest_released_version` on item
- Optionally mark current latest as deprecated (default: true)
- Wrap in transaction
### New GraphQL mutation: `AiCatalogItemVersionRestore`
- Arguments: `id` (version to restore from), `deprecate_current` (boolean, default true)
- Returns: newly created `ItemVersion`
- Authorization: `admin_ai_catalog_item` (Maintainer/Owner of owning project)
### Audit events
- Add relevant audit events
issue