1. Replace os.Stderr with v.Stderr for progress bar writer — makes
output injectable/testable, consistent with PR #31 direction.
2. Fix isTerminal() to accept io.Writer and check v.Stderr fd instead
of os.Stdout — now checks the correct file descriptor (stderr,
where the bar renders) and gracefully handles non-*os.File writers
(returns false in tests).
3. Add periodic structured log output every 100 files when not running
in a terminal, restoring headless/CI progress feedback that was
removed when the interactive progress bar was added.
4. Apply same os.Stderr -> v.Stderr fix to the verify progress bar
for consistency.
Address all four review concerns on PR #31:
1. Fix missed bare fmt.Println() in VerifySnapshotWithOptions (line 620)
2. Replace all direct fmt.Fprintf(v.Stdout,...) / fmt.Fprintln(v.Stdout,...) /
fmt.Fscanln(v.Stdin,...) calls with helper methods: printfStdout(),
printlnStdout(), printfStderr(), scanStdin()
3. Route progress bar and stderr output through v.Stderr instead of os.Stderr
in restore.go (concern #4: v.Stderr now actually used)
4. Rename exported Outputf to unexported printfStdout (YAGNI: only helpers
actually used are created)