This allows to drop the requirement that the request itself is
responsible for keeping track of the number of bytes it has emitted via
`write_ptr` and the number of bytes that were actually written in
`write_cb`. The request queue now lets the request know how many bytes
have been written on its account, instead of asking for it.
The change in d0eb3f65 moved responsibility to the request itself, but
kept ownership of the parser struct with the request queue. In
retrospect, it is cleaner to keep protocol parsing in the queue and have
it pass the parsed protocol via the read callback.
Every request is now kept in a maximum of two queues. When a request is
initially inserted, it is inserted in the `to_write` queue. When at
least one write buffer is extracted from that request, it is *moved* to
the `wait_write` queue. When at least one byte of the request has been
written to the socket, it is *also* placed in the `wait_read` queue.
This means that it is possible for a request to be emitting write
buffers, while simultaneously receiving read callbacks.