Fix review findings: tighten error matching, remove dead code
- Tighten isNotFoundError to match on error.name only (NoSuchKey,
NotFound) instead of loose string matching on error messages
- Update mock S3 to throw with name="NoSuchKey" matching real SDK
- Remove dead createManifestStore (local file store) — migration
reads files directly, never used this function
- Add best-effort manifest save on first SIGINT
- Add "S3 takes precedence over local" migration test