Rewrite CHANNEL logic in swank.lisp and swank-mrepl.lisp, add LISTENER class.

This is in preparation of the "globally redirect io" feature lost when
switching from swank-repl.lisp.

CHANNEL and LISTENER objects are now stored per CONNECTION instance,
which looses some repl-specific slots.

Macros like WITH-LISTENER and WITH-DEFAULT-LISTENER should abstract
way any nasty implementation details that swank-mrepl.lisp knew too
much about.

* swank.lisp (connection): New :CONC-NAME (CONNECTION. ->
CONNECTION-)
(connection): Remove slots USER-INPUT, USER-OUTPUT, USER-IO,
TRACE-OUTPUT, and REPL-RESULTS. Add slots CHANNELS and LISTENERS.
(channels): New macro, channels stored per connection.
(channel, initialize-instance, print-object, find-channel)
(close-channel, channel-send, define-channel-method)
(send-to-remote-channel): Move up in file and adapt to new
CHANNELS macro.
(initialize-instance :after channel): Set thread here.
(listener): New class.
(listeners): New macro, listeners are stored per connection.
(initialize-instance :after listener): Set OUT, IN and ENV here.
(with-listener): New macro.
(with-default-listener): New macro, replaces WITH-IO-REDIRECTION.
(with-io-redirection): Replaced by WITH-DEFAULT-LISTENER.
(with-connection): Use WITH-DEFAULT-LISTENER.
(spawn-channel-thread): Moved from swank-mrepl.lisp.
(drop-unprocessed-events): New generic, read it's FIXME.
(read-loop, install-sigio-handler, deinstall-sigio-handler)
(install-fd-handler, deinstall-fd-handler)
(repl-input-stream-read, connection-info)
(need-full-indentation-update-p, perform-indentation-update): Use
new connection accessors.
(defpackage :swank-api): Moved here from swank-mrepl.lisp.
(force-user-output, clear-user-input): Use WITH-DEFAULT-LISTENER.

* contrib/swank-mrepl.lisp (defpackage #:swank-api): Move to swank.lisp
(listener-channel, initialize-instance listener-channel): Removed.
(mrepl): New class, inherits SWANK:CHANNEL and SWANK:LISTENER
(with-listener-channel): Move to swank.lisp and renames WITH-LISTENER.
(create-mrepl): Create an MREPL.
(initial-listener-env): Removed.
(swank::drop-unprocessed-events): (Ab)use new
SWANK:DROP-UNPROCESSED-EVENTS generic.
(spawn-listener-thread): Removed.
(:inspect-object, :teardown, copy-values-to-repl)
(:sync-package-and-default-directory, :copy-to-repl, send-prompt)
(mrepl-eval, mrepl-read, make-mrepl-input-stream, read-input)
(open-dedicated-output-stream): Update arg names to reflect new
concepts.
(make-mrepl-output-stream): Make the dedicated output stream here.

* contrib/swank-snapshot.lisp (restore-snapshot): Update accessor names
(CONNECTION. -> CONNECTION-)

* contrib/sly-old-repl.el: Remove, don't really need it.
* contrib/swank-repl.lisp: Remove file.