stage2: tokenizer: require null terminated source

By requiring the source file to be null-terminated, we avoid extra
branching while simplifying the logic at the same time.

Running ast-check on a large zig source file (udivmodti4_test.zig),
master branch compared to this commit:
 * 4% faster wall clock
 * 7% fewer cache misses
 * 1% fewer branches
3f680abbe2Andrew Kelley committed on 7/2/2021, 8:27:35 PMparent8ce880c
6 files changedLine totals unavailable