Import and integrate modern diff algorithms from Game of Tree's libdiff.

This adds support for two new diff algorithms, Myers diff and Patience

diff.

These algorithms perform a different form of search compared to the

classic Stone algorithm and support escapes when worst case scenarios

are encountered.

Add the -A flag to allow selection of the algorithm, but default to

using the new Myers diff implementation.

The libdiff implementation currently only supports a subset of input and

output options supported by diff. When these options are used, but the

algorithm is not selected, automatically fallback to the classic Stone

algorithm until support for these modes can be added.

This review is published as a WIP, there are a couple of patches in the libdiff

import that still need to be upstreamed, but I think this is ready for feedback

for the integration of the library.