Add WithMedium option so Store archives and Import/Export helpers can
route through any io.Medium implementation (local, memory, S3, cube,
sftp) instead of the raw filesystem. The Medium transport is optional —
when unset, existing filesystem behaviour is preserved.
- medium.go exposes WithMedium, Import, and Export helpers plus a small
Medium interface that any io.Medium satisfies structurally
- Compact honours the installed Medium for archive writes, falling back
to the local filesystem when nil
- StoreConfig.Medium round-trips through Config()/WithMedium so callers
can inspect and override the transport
- medium_test.go covers the happy-path JSONL/CSV/JSON imports, JSON and
JSONL exports, nil-argument validation, missing-file errors, and the
Compact medium route
Co-Authored-By: Virgil <virgil@lethean.io>