common: use common uv__count_bufs code

Until now it was reimplemented in 2 different places (unix, win).
unix, win: add send_queue_size and send_queue_count to uv_udp_t

This functionality is present in stream and uv_udp_t has a queue
as well so it makes sense for udp to have a send_write_size.
Since udp sends entire messages atomically, the send_queue_count field
lets the user determine how many messages are there left to send.
unix, win: add uv_udp_try_send

The function returns UV_EAGAIN if the queue is not empty and
the message couldn't be sent immediately.
unix: return UV_EAGAIN if uv_try_write cannot write any data
test: simplify test-tcp-try-write

Use a smaller buffer thus making sure that uv_try_write will succeed at
least once
doc: grammar, udp documentation fix up
windows: fix compatibility with cygwin pipes

This makes libuv more tolerant to the properties of the pipes
that it can use without any issue. This is necessary because Cygwin
(and hence Mintty) opens STDIN without FILE_WRITE_ATTRIBUTES.
windows: count queued bytes even if request completed immediately

The send_queue_size/count needs to maintain its value until right before
the callback is called.
windows: disable CRT debug handler on MinGW32

We cannot actually use it because the header is not present, so disable
it. On MinGW-w64 it does work though.
build: fix build on MinGW32
windows: map ERROR_INVALID_DRIVE to UV_ENOENT
doc: cleanup API documentation in uv.h
unix: try to write immediately in uv_udp_send
test: fix watcher_cross_stop

It's possible that recv_cb_called is bigger than the number of sockets,
because if all sends succeed the recv callback is called twice: once
with the actual data, and another time with 0.
doc: clarify why we don't use SO_REUSEADDR for TCP on Windows