1.0.32.28: fix listen / read-char-no-hang
Whoops. The external-format changes broke read-char-no-hang after an
unread-char: very noticeable indeed just as soon as an error occurs in
slime. In my defence, this was already broken on bivalent streams; I just
propagated that brokenness to all fd-streams.
Include a run-program-based test, because that produces the kind of streams
that can have no data and yet not be at EOF. In the slime context, they're
sockets, so it's a bit difficult to test the slime case exactly; ideas for
good simulations welcome.