Don't warn twice about undefined reference links.

It was warning once when trying to lookup the URL, and again on the
lookup for the optional title.

Also: Give a clearer error message, "Reference link not defined"
(instead of "Unresolved reference"). Possible to do so because as of
commit 4df5a95f the code only handles reference links. Likewise,
rename `get-ref` to `get-linkref`.

Also: Add or correct some function "comment contracts".
Change random-test.rkt to generate "tokens".

Previous version of this I used completely random characters. However
we're much more likely to generate something that could break the
parser if we randomly choose among "tokens" that mean something
special in markdown (as well as from plain words). This results in
something that looks like it could be markdown -- both to a human and
a parser.

Soon after using this I already discovered a bug in the fenced code
block grammar that would cause a syntax error. And I also discovered
an input that causes the parser never to terminate. So that's good
news, at least from one perspetive.
Fix problem with $verbatim/fenced.

It needs to consume trailing blank lines, if any, leaving things
aligned for the next $block parse.

Note: I discovered this via the newer random-test.rkt, so that seems
to be paying off.
Merge remote branch 'upstream/master'