Add vcs/util.go containing two utility functions that were specified
in issue #78 but omitted from PR #83:
- GetAllFilesInPath: recursively fetches all file contents under a path
using the vcs.FileReader interface. Returns map[string]string of
path -> content.
- BuildLineToPositionMap: parses a unified diff and returns per-file
mapping of new-file line numbers to GitHub diff-position convention.
Position is 1-indexed from @@ hunk headers. Deletion lines are not
mapped (no new-file line number). Position counter continues across
hunks within the same file but resets for each new file.
Unit tests cover:
- GetAllFilesInPath: empty dir, flat dir, nested dirs, mixed, errors
- BuildLineToPositionMap: single hunk, multi-hunk, deletions not mapped,
multiple files, empty diff, no-newline marker, single-line hunk,
deleted file