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.