Fix NBD streaming to XenServer

Previously we were using a mixture of buffered and unbuffered I/O
which was only safe if the HTTP response didn't include extra data
from the NBD server i.e. provided the NBD protocol has the client
send data to the server first. Unfortunately the NBD protocol calls
for the server to speak first, and this was getting eaten in the
buffering.

We now switch to unbuffered HTTP I/O which is guaranteed not to
eat too much data, at the cost of performing more individual read
syscalls than before. Since it's only reading the HTTP headers --
which are quite small -- this isn't a problem.

Signed-off-by: David Scott <dave.scott@eu.citrix.com>