related to #1093, there's a lot of too-eager char codes -> string conversions, and a lot of 1 character strings. It'd be nice to have inputstream.dart return int and List<int> and have tokenizer.dart consume those, not stringifying until ready to send tokens to the parser. Also, for character/space tokens it would be nice to preserve it even longer, and fix the treebuilder insertText code path