Add error handling when shelling out for diff

This is an attempt to fail gracefully when shelling out to diff raises.

Saw a report of Errno::ENOENT being raised on Windows because diff.exe was missing from their system. This tries to fix that.

Here is the tweet that I saw: https://twitter.com/Cumbayah/status/290926239047376896