This is a much faster implementation avoids duplicating work done by
Buffer.get_range. Buffer.get_range also does not have the bug reported
in #83.
The test case was also updated to reflect that get_chars now uses bytes,
instead of columns.
closes#83
We use Buffer.Node.get_byte_pos instead of Buffer.Node.get_range to calculate
tree-sitter edits for incremental parsing. This reduces the number of
egc_length calls required per syntax.edit call to the minimum.