v1.5.1 - release-create idempotent on duplicate-pipeline-fire

Single fix: release-create no longer fails when a tag's release
already exists. Replaces the GitLab CI release: keyword (which
always invokes release-cli with --no-update) with a script that
checks the API for an existing release and skips create when one
is present. upload-release-assets similarly tolerates pre-existing
asset links: 400/409 responses with "already exists" or
"has already been taken" downgrade to "already linked" instead of
failing the job.

Caught during dunn.dev/bairn v0.2.2 release: a manual API trigger
and a delayed auto-trigger raced; the second pipeline failed at
"Release v0.2.2 already exists." Cosmetic but annoying. With this
fix, future duplicate fires complete silently as no-ops.

Both jobs now use registry.gitlab.com/dunn.dev/pipeline/ci:latest
(curl + jq + bash) which matches the rest of the catalog.

No other component changes.