A filesystem-backed Stevedore.Store.
Blobs are laid out as <root>/blobs/<algorithm>/<hex>, matching the OCI image-layout blob
convention. Writes are atomic (temp file + File.rename/2) and digest-verified (the
bytes must hash to the digest before the blob is committed). The on-disk path is derived only
from a validated Stevedore.Digest, never from caller-supplied strings, so there is no
path-traversal surface.
The store config is the root directory, given as a path string or [root: path].
Spec: OCI image-layout.