Parse diff files produced by git diff

@cpennington

FYI Still a major bug in here related to the consumption of newlines... note the test for fileDelta that requires 4 "\n" chars at the end of the block for it parse.
If we included diff formatting as well as parsing, then quickcheck would be useful to ensure that parse and format are inverse operations. I think the type of tests you've got here seem fine.