handle output without requiring a lock

once the requests are lockfree we can also avoid assiging connections
to the worker but let them only compute the response and use a single
iomux to handle the i/o (as done from the inter-node communication via
the async_mux)
s/fetch_error/error/  and close the connection earlier if there was an error

also when we are not able to compute the digest for the response, there is no
point in trying to send the status response, we can just raise the error flag and close the connection
use a lockfree ringbuffer instead of a queue to handle the output chunks

+ some optimizations