Resolve crash with diff against empty file

It is not legal inside our `p_mmap` function to mmap a zero length file.  This adds a test that exercises that case inside diff and fixes the code path where we would try to do that.

The fix turns out not to be a lot of code since our default file content is already initialized to `""` which works in this case.

Fixes #1210