matches a b returns a list of pairs (i,j) such that a.(i) = b.(j) and such that the
list is strictly increasing in both its first and second coordinates. This is
essentially a "unfolded" version of what get_matching_blocks returns. Instead of
grouping the consecutive matching block using length this function would return all
the pairs (mine_start * other_start).
Same
context before and after New, Old, and Replace ranges.
get_hunks a b ~context ~compare will compare the arrays a and b using
compare and produce a list of hunks. (The hunks will contain Same ranges
of at most context elements.) context defaults to infinity (producing a
singleton hunk list), compare defaults to polymorphic compare.
get_status hunks returns `Same if each hunk in hunks has only Same ranges.