stream: introduce uv_try_write(...)

`uv_try_write(req, handle, bufs, nbufs)` acts like `uv_write()`,
but without queueing actual write until UV_POLLOUT (or IOCP completion).
This is useful for doing writes using on-stack `uv_write_t` requests.

see #1025 for details.