std::fmt::Default → Show (mozilla/rust#11948).
Abstract `TcpStream::connect()` into a new trait.

This allows ``RequestWriter.connect`` to be implemented for more than
just ``TcpStream``—and hence ``read_response()``, ``write_headers()``
et al. There are two primary benefits that I can think of:

- It will make testing the client much simpler; full simulations of
  the TCP stream can be done without needing to actually make a TCP
  connection, by implementing ``Connecter`` for a custom type.

- Making SSL connections may be able to make use of this (this benefit
  is much more hypothetical—I’m not sure whether it will work out or
  not, because it’s a matter of return types).

On the other hand, this is normally going to kill type inference for
``RequestWriter``. That I plan on remedying with this new-fangled
default type parameter stuff (that is, with something like
``RequestWriter<S: Stream + Connecter = TcpStream``). That will mean
that other crates can just write ``RequestWriter`` for the moment,
which goes a fair way to fixing the situation.

(In the long run, we'll have a convenient API with functions like
``get()`` which will be fairly trivial wrappers but will use
``TcpStream`` [unless the SSL point works out well].)