v3.14.5 — cross-service GPU eviction hardening + /v1/unload endpoints

Closes the resource_manager gap that let audiolla / flickies
OOM-kill talkies / ollama by hoarding VRAM. Ships new POST
/v1/unload/{cuda,cpu} endpoints so operators can free VRAM
without piggybacking on a fake LLM call. Bundles the flickies
v0.2.0 → v0.3.0 upgrade.

RESOURCE_MANAGER:
  Added cuda-audiolla + cuda-flickies (+ CPU siblings) to
  _ALL_CUDA_GROUPS / _ALL_CPU_GROUPS. Matching _unload_* funcs
  hit audiolla's POST /v1/unload (bulk evict) and flickies'
  DELETE /v1/engines/{slug} (per loaded engine). Downstream
  calls carry AIGATE_TOKEN as bearer.

  Before: LatentSync holding 7 GiB VRAM → next talkies Whisper
  load → torch.OutOfMemoryError → container restart.
  After: pre_call unload includes audiolla + flickies → their
  engines released → next call has VRAM.

NEW ENDPOINTS:
  POST /v1/unload/cuda   — fan out to all 7 CUDA services
  POST /v1/unload/cpu    — CPU counterpart
  POST /v1/unload        — both classes
  Response is per-service outcome map. Per-service errors do
  not fail the whole call. Implemented in mcp/server.py via
  @mcp.custom_route; nginx routes /v1/unload/{cuda,cpu,''} →
  mcp:8000 with 120s timeout.

FLICKIES v0.2.0 → v0.3.0 (CPU + CUDA):
  Image-tag bump. Adds `precise: bool` (default false) on
  POST /v1/video/trim + POST /v1/video/concat for frame-accurate
  boundaries (libx264 CRF 18 / AAC 192k). Default preserves
  prior stream-copy behavior. Pure additive.

Minor bump — additive endpoints + new groups + image bumps.
No breaking wire changes.

HEADS-UP: psyb0t/flickies:v0.3.0 + psyb0t/flickies:v0.3.0-cuda
may not be on Docker Hub at this tag's cut moment.