Prose edits plus add link to PHP Markdown Extras.
Redesign HTML parsing.

No need for the fussy distinction of block vs span elements.

That isn't relevant to parsing the HTML per se.

It's only relevant to the markdown context -- whether the markdown
parsing expects a block or inline element at that point.

- If it expects a block, consume any trailing blank lines to align the
  parser for the next block element.

- If it expects an inline element, definitely do not. Otherwise an
  inline at the end of paragraph would incorrectly cause that
  paragraph to be joined with the next thing (if posible). Ex:

            I am <span>foo</span>.

            Next paragraph.

Note that this also allows the redex tester to be restored to its
original simplicity. It can generate its entire $thml grammar (because
we no longer need a list of block vs. span elements). And it doesn't
need to care what elements are technically allowed to be void or not.

HOWEVER, I did need to make redex generate either <tag>...</tag> or
<tag /> for void elements. The case of <tag> alone can cause very slow
parses, since the parser needs read to EOF to determine it has no
matching close tag. This might be the one area it would help to retain
the list of void elements, and short-circuit for those. I'll leave
that for a future commit.
Add comment: current-strict-markdown? doesn't apply to HTML.
Check for void elements first.

In the case of legal void elements -- where <tag> is legal and <tag />
is not required -- this speeds parse by avoiding fruitless search for
a closing tag.
Decimal as well as hex entities.
atx headers separated by many blank lines. Fixes #32.
Reorgnize HTML parsing.

- Parse void elements first. Especially legal void elements without an
  explicitslash, like <br> instead of <br />. Avoids searching for
  close tag.

- Next $html-element handles both open/close pairs, and any remaining
  unmatched open tags.
Changes to emph and strong.

random-test.rkt was very slow since commit 42cbb412. I think it was
due to unnecessary runtime function creation.

But also, the correct parse that fixes #30 is not going to deal so
well with deliberately fake emph or strong. So I concluded that
random-test.rkt was being too "provocative", and dialed that back.
Just tweak indent on some tests.
Enhance check-md to use sexp-diff to show failures.
Enhance commit 58886f10: Substitute #:actual and #:expected keywords.
Use `define-check`.
Add comments about why test disabled.
Comments and small tweaks.
Change smart punctuation rules for hyphens -> dashes.

"---" and "--" _always_ become &mdash;

"-" becomes &ndash; IFF followed by optional spaces and a digit. In
other words, &ndash; is used for things like "617-555-1212" and "1 + 2
- 3", but _not_ for things like "non-dashed" or "foo - bar".

Not only is the output more desirable, the parser is slightly but
measurably faster because the grammar is simpler.
Change xexpr->text to match bf86f0b8.

Not sure it matters, but.
Add missing deps and build-deps. Fixes #33.
Make smart-punctuation faster. See issue #67.

Among other things, Racket's `parameterize` doesn't work in the face of
Parsack's use of lazy evaluation. Instead, add Parsec-style "user state"
to Parsack, and make use of it here.
Allow HTML tags to include hyphen
Single or double quote start only before $alphaNum