parseGitRawDiff dealt with the A, M, and D status flags from
git diff --raw, for file additions, modifications, and deletions
respectively. However, it failed to cope with C and R flags, for
copies and renames. Git version 2.9 and above default to resolving
renames, even in git diff --raw output, making this lack of support
only salient now (though users with Git's diff.rename set
encountered it previously).
Those two flags differ from the other three in that they offer both the
source and destination filename, separated by a tab. As
parseGitRawDiff was not aware of this property, it returned a
"filename" of "oldfile\tnewfile". This is surfaced in several
places, including as passed to linters as a filename to check.
Needless to say, this file is nearly guaranteed to never exist on
disk.
Detect both the C and R flag types, and generate either a file
addition, or a pair of addition/deletion entries.