unix: guarantee write queue cb execution order in streams

The problem is that currently the canceled write callbacks
are being called before the already written callbacks, even
though they were queued after them.
I'm a bit uncertain about how this should work. If no write happens immediately you'll bail out in the first loop iteration, and if the request succeeds on the first try and the callback is called, we might call uv_write again with the same write_request object.