[ResearchLiveHTML] Handle self-closing and unclosed tags when parsing.

* For implied-close tags, we properly close them when a new tag that forces
  closing is encountered.
* For unbalanced tags, we close tags up the stack until we get to a matching
  tag.
* This fixes all the existing HTMLInstrumentation tests, so they're now all
  re-enabled. (A few of them have been tweaked to match some new behavior
  in certain edge cases, and a few were added.)
* Removed the vestigial callbacks in HTMLTokenizer and replaced them with
  "special" tokens that mark the end of open tags and self-closing tags.

@dangoor