v3.9.1 — Surya OCR 2 follow-up: layout + table-rec tests + DPI fix + usage docs

Patch release. No production code changes — the llamacpp/ wrapper,
model registries, compose services, LiteLLM provider configs, and
resource_manager wiring are byte-identical to v3.9.0.

Tests: 8 → 12 cases. New `layout` + `table_rec` test functions per
variant now exercise the two Surya prompt modes v3.9.0 shipped support
for but did not test. _llamacpp_ocr_call grew a task=block|page|
layout|table_rec dispatcher that selects the right verbatim Surya
training-time prompt per task.

New fixture: tests/.fixtures/table.pdf (A4, 3×3 bordered table).

PDF rasterization DPI dropped from 200 to 96 — Surya's training-time
default. ~4× CPU encode speedup with no accuracy loss on the synthetic
fixtures (200 DPI inflates prompt-token count quadratically).

Docs: full Surya usage section across README + docs/services-
reference.md + docs/usage.md + docs/providers.md. Documents all 4
trained-in prompts verbatim, per-hardware throughput tables, the
wrapper's http:// → data: URL rewrite, DPI sweet spot, and "which
slug should I pick" workload picker.

See CHANGELOG.md for the full breakdown.