Revert "Revert all diff/ to last known good commit"

This reverts commit f176df05b8056320cd563b4e783f0a78744e6157.

Randal Watler has a fix for this code, now.
Correct 'removeRemaining()' Diff creation in postLCS()

Set "secondArrayIndex" used by array diffs to remove index, which is the second
array length in this case.

The comment in the original Diff.tailArrayRemove() code was incorrect: the
Diff.secondArrayIndex is used to generate array difference/patch objects. This
patch ensures that is set correctly. Because these are removes at the tail, we
know that the secondArrayIndex will be equal to the length of the second array.
This is just as if we were removing all elements that were in that position when
the patch would be applied to ensure that the second array ends up at that
length when done.

Fixes issue #11 with refactored code.
DiffFactorizer: throw IllegalStateException if the op type is unexpected
Fill release notes
1.7