Because of the way TreeSitter parsers are generated, the parse callback
can ask for a byte offset at the exact end of the byte slice we're
processing, and slicing at the end of the slice in Rust causes a panic,
so we need to explicitly ward against this.
* Rename parse_str to parse and make it polymorphic.
* Rename parse_utf8 to parse_with, since it is now the callback-based
version of parse
* Add a parse_utf16 method analogous to parse
* Rename existing parse_utf16 method to parse_utf16_with
This brings in the changes from tree-sitter/rust-tree-sitter#5