Redesign HTML parsing.

Most importantly, take into account elements that have implicit close
tags. For example in this HTML:

    <ul><li>0</li><li>1<li>2</ul>

The first <li> is closed with an explicit </li>, the second <li> is
closed by another <li>, and the third <li> is closed by the end of the
parent </ul>.

Note that this isn't really attempting "pragmatic" parsing as does the
html-parsing package, because these rules are in the HTML5 spec:

http://www.w3.org/html/wg/drafts/html/master/syntax.html#syntax-tag-omission

Doing this is important for performance, because our worst case scenario
remains -- searching to EOF for a closing tag, not finding it,
backtracking, and repeating.
Bump to v0.11