Chunk
class Chunk(val changes: List<Change>, val fromA: DocPos, val toA: DocPos, val fromB: DocPos, val toB: DocPos, val precise: Boolean = true)
A chunk describes a range of lines which have changed content in them. Either side (a/b) may either be empty (when its to is equal to its from), or points at a range starting at the start of the first changed line, to 1 past the end of the last changed line.