restored a single per-request fbuf and a mutex around it

using an rqueue (or a queue) ended up being too expensive because
of the many allocations. I tried using some buffer and request pools
to minimize allocations and reuse the previously created objects but
it still resulted slower than the previous implementation.

This new implementation reduced the critical sections so that the
request is never locked for long time but only for the time of copying
the chunk of data in or out of the fbuf. Note that it adds some copies
since local fbufs are used while generating the respones and then
it's copied within a critical section to req->output.
During the stress test it seems to be anyway equivalent or slightly
faster than the previous implementation (and calls to pthread_mutex_lock()/unlock()
are less prominent in the perf output)