A resonably fast diff algoritm using longest common substrings that can also detect text that has moved