Wrap the TcpStream in a BufferedStream.

As it stood, the header-reading part of a client used a BufferedReader
which was then discarded, although it had probably consumed at least the
start of the request body.

I had been using TcpStream, BufferedReader<TcpStream> and
BufferedWriter<TcpStream> in different places. This was entirely
unworkable, so I've replaced them with immediately wrapping the
TcpStream in a BufferedStream and using it everywhere. This makes things
sane for now.

Alas, this also introduces a rather severe regression owing to an
as-yet-unidentified Rust bug, for the call to
http::client::response::ResponseReader::construct is causing a segfault.
That is, execution is failing after the caller has begun calling the
function, but before construct has begun to execute. This renders the
client inoperable for the moment.

--HG--
extra : amend_source : 9263d96068f59080326179877528b84946587e85
Add -Z debug-info to RUSTFLAGS.

This improves GDB output for things like that segfault introduced in the
latest changeset, which is rather convenient.

--HG--
extra : amend_source : d617dbe900cad0748a21f1e6934c1792851d912f