Fix parsing Git diffs with both renaming/copying and changing modes on files.
Review Request #6754 — Created Jan. 9, 2015 and submitted
Our Git diff parsing logic assumed that if there was a mode change, the file was being edited and not renamed/copied. Whether or not that was once valid, it's not now. We now separate out the mode checks from the rename/copy checks. As part of this, we also needed to update those checks to ensure they didn't check out of the line range, as that resulted in a breakage in a previous test. A unit test was added to test for this case.
Unit tests pass.
Tested manually with a previously broken diff. Saw that it contained the expected information.