Functional prototype of diffu: diff with updates.

Now, a reminder that normal diff *only* deals in updates and deletes
(but through a side effect of its design, is good about lining up the pairs which represent changes)
but the [COOPY spec](http://dataprotocols.org/tabular-diff-format/) has provisions for it
and in the context of tables with lots of columns it makes of sense.

This algorithm is inspired by that observation of regular diff:
it first runs the diff algorithm from last night to get {add,delete}s
and the reprocesses the results, looking to see if it can compress
pairs (delete, add) into a single (update,).
I would love to bang this down into a single algorithm which only does a single sweep
As is, it certainly is expensive; it makes the whole runtime something like p*(n + n^2)
(however, compared to [diffkit](https://code.google.com/p/diffkit/source/browse/trunk/src/org/diffkit/diff/engine/DKRowDiff.java) I suspect this is reasonable)