Rework empty buffer handling

Speeds things up by a few percent.
Add a program to run a single benchmark once, for profiling
Add another uncommitted benchmark
Rename util/ascii.rs -> util/str.rs
Reserve a little space in each string buffer when we allocate it

Speeds up real pages by a few percent.
Profile how much time is spent in each tokenizer state
Move ignore_bom out of the get_char hot path

Speedup: about 5-7%
Make exact-errors benchmarks optional

These aren't really supposed to be fast, and they more than double the run time
of the benchmark suite.
wip