Time both strict and non-strict.

(Strict will be faster because simpler grammar.)
Rewrite $link like $image, using pdo not >>=
Simplify $link-title and make $source handle <src> variant.
Simpler, faster definition of $code.
Fix $line-break: At least two spaces followed by newline.
Use `(require (only-in parsack ...))`.

In case user of our package gets a newer version of parsack package
that `provide`s a new identifier colliding with one of ours.

IIUC really ought to do this with all third-party packages.
Overhaul links, strict mode, markdown test suite:

- Add a "strict mode" under which non-"standard" extensions like smart
  punctuation and fenced code blocks aren't recognized. Controlled by
  the new `current-strict-markdown?` parameter.

  The main motivation for this was to make it possible to use some
  third-party markdown test suites. In that case we want to parse
  "It's" to "It's" not '("It" rsquo "s"), to give just one example.

- Overhaul handling of explicit links and reference links.

  Fix some corner cases with link URLs and titles (such as URL with
  parens, quoted titles containing quotes, and so on). Unit tests
  added for such cases.

  I'd failed to comprehend a couple things about reference
  links. 1. "[foo]" alone can be a reference link, "[foo][]" is not
  required. 2. What should happen to "[foo]" or "[foo][]" when there
  is no reference link definition for "foo"? I had been inserting
  links to empty URLs. Instead, they should be handled as literal
  bracketed inlines, e.g. show up as "[foo]" or "[foo][]" in the text.

  As a result, we don't know how to parse them until we know all of
  the reference link definitions. (We can't even put in links with
  "fix-me-up-later" URLs, as I'd been doing previously, because they
  might end up not being links at all!)

  Pandoc handles this by making two parsing passes: One to parse
  reference link (and footnote) definitions, and a second pass to do
  other/normal markdown passing. Instead, I'm doing one parsing pass,
  and storing the possible reference link uses as promises (with
  enough information about the original input to be able to create a
  link OR to reparse as non-link source). The `resolve-refs` pass that
  walks the output xexprs, now simply calls `force` on every
  element. If a promise, the promise decides what to do based on
  whether the link definition exists now or not.

- Add suite-test.rkt, to test against Gruber test suite files via
  mdtest. Currently 13 tests pass exactly, 1 test (tabs) mismatches
  only because I'm not currently expanding \t to spaces, and 9 tests
  don't pass yet. Goal is to pass all, even though some of what's
  required has more to do with fiddly normalizing of HTML output than
  the semantics. As a result, I'm usually adding tricky examples I
  learn about, in the form of my own unit tests in test.rkt, rather
  than relying solely on the test suite handling this at some point.