In some places the parser guards against dereferencing End, while in
others it relies on the presence of a trailing '\0' to elide checks.
Add the remaining guards needed to ensure the parser never attempts to
dereference End, making it safe to not require a null-terminated input
Update fuzzer harness so that it doesn't ensure null-terminated inputs.
Some of the regression tests were written by inspection, and some are
cases caught by the fuzzer which required additional fixes in the