unix: use struct sockaddr_storage for target UDP addr
Revert "test: make barrier test more rigorous"

This reverts commit 6c6c9221679c6cc66ac30fbad5ce086658113ea3.

It introduced a race condition which made tests fail on Linux and SunOS.

Closes #1340
doc: add documentation to uv_udp_start_recv
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
win: set SO_REUSEADDR when binding TCP sockets
We already did this for unix, so this brings parity to Windows.
Hopefully it works the same on Windows as it does on unix.

Signed-off-by: Peter Atashian <retep998@gmail.com>