utf8: Ensure three blank lines between root decls/defs.

Also add a comment indicating the end of the first instance of the
unsafe namespace because there's a lot of }s.
utf8: Add is_intermediate_ function.
utf8: Replace duplicate code with is_intermediate_.
utf8: Add utf8::before.

Because it should be possible to do some things in reverse.
utf8: Add utf8::backtrack.

Counted form of backtrack that overwrites the input iterator.
utf8: Add utf8::before (counted).

Counted form of utf8 that doesn't overwrite its input.
utf8: Simplify body of utf8::backtrack.

Just use the result of counted utf8::before.