1. First, try to make it more portable to not-quite-standard
systems (like Windows + MSVC) by not using alloca anywhere and by having
configure look for `strcasecmp` vs `stricmp` and `strncasecmp` vs `strnicmp`, then
2. Clean up some horrid interactions with bsearch by converting `blocktags[]` into
an array of `struct kw`s and having `isopentag()` construct a `struct kw` and
use that for searching instead of `malloc()`ing a buffer, making a null-terminated
string, then comparing against that, and, finally
3. Catch a horrible parsing bug where I didn't null-terminate html blocks during
the blocking pass of the compiler, so at cleanup time I ended up double-freeing
blocks and causing the program to dump core if I used anything other than
`alloca()` inside `isopentag()`.