Display Racket `#<pict>` values as images in the REPL.

As acknowledged in THANKS.md, this draws very heavily on the pull
request @gcr made to Geiser:

  https://github.com/jaor/geiser/pull/1

One visible difference is that I'm using plain print for the non-image
case, not pretty-print, because the latter seems too big a change from
the status quo. Maybe in some future commit that could be an option.
Check for definitions using nom-id. Fixes #44.

This matters for Typed Racket definitions.

Confession: This feels ad hoc. I'm not confident I'm handling a bona
fide special case, i.e. working around another bug/limitation of
identifier-binding. Instead maybe I'm failing to organize my code around
the correct concepts.
Add space.
Add racket-describe
Change use of racket/help.

Now more like XREPL:

If given an identifier, will go directly to that help topic, based on
the identifier's meaning in the namespace.

If given a string, will search and present choices.
Use `racket--do-require' in `racket-company-backend'.
Change `racket-doc' to use ,doc not raco help.

Should have done this in commit 000644f.
Improve racket-doc.

If identifier help doesn't find a topic, automatically try again using
string help.
Show doc (if any) not just bluebox.

Also ,describe now returns plain text rather than an association list,
since none of the other information is really useful. Even the
Definition and Documentation buttons can be done using racket-doc and
racket-visit-definition commands on the symbol.

One drawback is that my conversion from HTML to plain text is not always
pleasing. So next I'm going to try having ,describe return HTML text,
then use libxml-parse-html-region to parse it and shr-insert-document to
display it. I may need to simplify the Scribble HTML, however.
intrapara-anchor needs to be more flexible.

For example the doc HTML for `xref-binding->definition-tag` varies
slightly from all the other examples I'd found so far.

Frankly this is a hack attached with masking tape to another hack. It
would be wonderful if Scribble HTML were more "semantic", with e.g. a
clean <div class="defproc"> encapsulating the output from each defproc
form. Even better would be an official Scribble library to extract
this (which could either use such new/improved semantic HTML output, or,
at least confine the ugly hackery to one official place).
describe now returns HTML text.

This enables less-bad formatting.
Avoid TR REPL's result type annotation in describe.
Use hex literal.
Show error for undefined.
Don't bind C-c C-p to racket-cycle-paren-shapes in REPL.

That's already the binding for comint-previous-prompt.
Have describe write its HTML to a temporary file.

This is more resilient than writing it into the *Racket REPL Redirected
Output* buffer, because comint-redirect-send-command-to-process looks
for comint-prompt-regexp to detect end of output. If a line of HTML
starts with something that looks like that -- e.g. ">" or "p>" -- then
it will break. Attempting to make comint-prompt-regexp resilient to that
is a losing game. Instead, it's easy to write the HTML to a file, and
print to the REPL output simply a string that is the file pathname.
Relax comint-regexp-prompt.

I'd made it stricter when working on the problem that commit 0af8f55
instead solves more fundamentally.
Add key binding and menu item for racket-describe.
Show the "kind" and provided-by info.

Also, delete code for the now-unused plain text format output.
Use set-process-coding-system for UTF-8.

Instead of set-terminal-coding-system, which is global.