Add end-to-end test suite against real Garage via testcontainers * internal/testutil/garage: spins up dxflrs/garage:v2.3.0 with --single-node --default-bucket so the bucket + access key are auto-created from env vars at startup, no CLI bootstrap dance. Each Start() call yields a fresh container with random creds and registers t.Cleanup teardown. * e2e_test.go gated by build tag e2e exercises the compiled cacher binary against the container — covers init/doctor parity (the regression guard for the HeadBucket+signature bugs we hit on the real bucket), single-file round-trip, exit codes (1/2/3), URL fallback + cache fill, --hash-from parity with sha256sum, directory tar+zstd round-trip, and delimited list output. * just test-e2e recipe; requires Docker on the host. Total runtime ~30s after first image pull (~1.5s/container).