Stand up the shared library with its first module: the Postgres plumbing
every service currently copy-pastes — the DSN builder, the pool
constructor, and the migration runner arrproxy proved out.
- Add pg.DSNFromEnv, generalising the identical Sprintf builders in
encapi, artifactapi and forgebot into one prefixed lookup with
DATABASE_URL passthrough and libpq fallbacks.
- Add pg.New and pg.NewMigrated, which ping before returning so an
unreachable server fails at startup rather than on the first query.
- Add pg.Migrate, lifting arrproxy's runner verbatim in semantics and
generalising the hardcoded advisory-lock key to FNV-1a/64 of a
caller-supplied name and the embedded set to an fs.FS.
- Add pg/pgtest, unifying the encapi and artifactapi testcontainers
helpers, with SkipIfShort so container-backed tests self-skip on the
Docker-less Kubernetes runners.
- Add the Makefile, README and pre-commit config, plus test, pre-commit
and build pipelines on golib-ci.