gdiff: use slower, but smarter ruby diffing logic