optimizer: refine virtual clock, more precise shift-fuel tracking

Allow an effect-free `if` to not increment the effect-tracking
virtual clock (but increment the clock during branches, to avoid
moving computation into a branch).

Spend empty-`let`-elimination fuel more precisely, so that more
empty `let`s can be removed while still avoiding quadratic
compile times.
Scribble: improve Unicode handling for Latex/PDF output

Normalize strings to composed form before splitting a
string into characters to handle individually.