Unbreak "copy-to-repl" functionality in slime-presentations.el

The `slime-copy-presentation-to-repl' function simply copied a
presentations text to the REPL, which made these objects
ephemeral. For *inspector* the presentation was mispointing as soon as
the user navigated away*. For *sldb* the presentation it just didn't
work.

For this functionality, slime-presentation.el uses the same strategy
as slime-repl.el. A new `sldb-copy-down-to-repl' is also offered in
slime-repl.el.

* contrib/slime-presentations.el (slime-copy-presentation-to-repl):
Unbreak. Use same `slime-repl-send-string' strategy as
slime-repl.el.

* contrib/slime-repl.el (sldb-mode-map): Bind M-RET to
`sldb-copy-down-to-repl' in `sldb-mode-map'.
(sldb-copy-down-to-repl): New function, much like
`slime-inspector-copy-down-to-repl'

* contrib/slime-repl.el (slime-inspector-copy-down-to-repl): Use only
first return value of SWANK:INSPECTOR-NTH-PART.
Allow "copy-to-repl" from *sldb* buffers from other threads.

The previous change didn't deal with the edge case where the *sldb*
buffer is associated with a thread different from the REPL's. In these
cases the *, / and + variables weren't being set in the REPL where
they're useful. This change fixes that by setting these variables in
from correct REPL buffer.

* contrib/slime-repl.el (slime-repl-eval-string): slime-eval
SWANK:SET-REPL-VARIABLES when SWANK acknowledges with OK.

* contrib/swank-repl.lisp (*last-repl-form*, *last-repl-values*): new
variables.
(*repl-set-variables-function*): new variable.
(set-repl-variables): new function, extracted from REPL-EVAL,
switches to *REPL-SET-VARIABLES-FUNCTION* if that is non-nil.
(repl-eval): don't set auto variables here, defer that for later.
Rework slime-trace-dialog.el

* contrib/slime-trace-dialog.el: Reworked. Now works with multiple
connections. Use `slime-trace-dialog-hide-details-mode' and
`slime-trace-dialog-autofollow-mode' instead of buttons. New
menu.