Implement a parent-ownership DOM
Switch error!() to warn!()
Don't allocate and format error messages when exact error reporting is off
Move non-procedural macros into their own files
Account token sink time separately in tokenizer profiling
Split whitespace only as much as we need to make tree builder progress

This saves almost 200 ms parsing 1MB of lorem ipsum with no tags.

We split whitespace at the beginning in order to ignore it while transitioning
from Initial to InBody mode.  But the bulk of the document is processed in
InBody mode and doesn't need split whitespace.  So it's inefficient to copy the
entire document into many separate tokens.

This also fixes a bug with multibyte characters.
Specialize Bitset64 to characters

And move some code around.

Drop the commas from the macro invocations to simplify procedural macro
implementations of the same functionality (to come).