$html-tag+attributes returns an xexpr, as callers need.
Update HTML grammar.

For void elements, we accept any of <tag>, <tag />, or
<tag></tag> (although I don't think the last one is legal, it's
common, so allow it and slurp up the closing </tag>.

For non-void elements, require matching <tag></tag> pairs. Any
unmatched open or close tags will end up as text in the markdown
output, so people notice and can fix. Unlike a web browser, don't
silently ignore and "eat" them.

Note: I'm aware that HTML allows certain non-void elements to have
optional closing tags. For example an <li> may be closed without a
</li> by a subsequent <li>. Those shortcuts are probably handy for
people writing exclusively in HTML. I'm not going to support
them. Many examples, like <li>, have even better shortcuts like the
markdown syntax for lists. My goal isn't a general-purpose full HTML
parser; the spirit is to enable the use of HTML in markdown. If this
supports _a_ way to do something in HTML, but not _all possible_ ways,
I'm OK with that.