a generalized diff and merge library for c++