$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.
Merge pull request #23 from stchang/master

add redex-based random testing for html
Add test for nested tags.
Ensure `html->str` supplies close tags for non-void elements.

Move `void-element?` from parse.rkt to its own file so we can use it
here, too.

Even if a non-void element lacks contents, it MUST supply a close
tag. Otherwise the markdown parser will not treat it as valid HTML.

Would a better way to do this be to modify the redex grammar for
non-void elements in such a way that randomly-generated examples
_always_ have content? Perhaps, but (a) I don't yet understand how to
do that, and (b) I'm not sure that's really correct grammar. A
non-void element is permitted to have no contents. The point is that,
regardless of its contents, it must _always_ have the closing
</tag>. I really think this is a matter for html->str, at the
"boundary" of changing sexprs to HTML text.
Tweak the output of redex testing.

- Print an explanation up-front includign the number of attempts to
  follow.

- Only print every 100 times.

- Use flush-output so it appears immediately even in e.g. emacs shell.
Move redex test into a test submodule.

So not part of normal use of the library.

Also, use `check-equal?`. On failures, print the additional info we
have but let `check-equal?` print the usual actual vs. expected.
mv redex-tests/redex-html redex-test.rkt

Since I have other test files in the main directory.
Commit 02719a9 with more intensity of feeling, and less suckage.
Delete now-unused arg.
Fix approach to footnotes. Closes #19.

Untangle reference links and footnotes; different requirements.

Footnote uses and footnote definitions may appear in any order in the
source. (Including all of the definitions before any of the uses,
alternating uses and definitions, or whatever order.)

Footnotes are numbered by the order the footnote uses appear in the
source, of course.

Definitions should be gathered into a single `div` at the end, using
an `ol` to number them automatically.

Definitions should appear in order based on the footnote number (not
on the order of the definitions in the source).
Merge remote-tracking branch 'upstream/master'