Split out anonymous function for legibility.
Add guard for hash-ref/hash-set! of `free`.
Fix interaction between content decoding and chunked transfer decoding.

This is the issue that was causing the unit test for yahoo.com to hang
with: "custom-port-pipe-read: input port is closed".
Yak shave: Change cond to match
Add request/redirect/uri. Deprecate request/redirect.

request/redirect isn't well designed. It can result in disconnect being
called twice on the same connection. It shouldn't take input and output
ports for a connection, because it may need to change the connection for
a redirect. Instead it should take a URI.

I would simply change it but I don't want to break anyone using it. So
instead I'm deprecating it, and adding a new `request/redirect/uri`
function.

Also, of course, rewrite call/input-request and call/output-request to
use request/redirect/uri.
Thread timeout disconnect only if still on `free` list.