windows: fix build error

Previously using Windows DevKit 8.1
`tcp.c(250): error C2275: 'SOCKET' : illegal use of this type as an
expression`
unix: handle case when addr is not initialized after recvmsg

If the handle was opened using `uv_udp_open` ift's possible that the
kernel doesn't fill in the msg_name field, so return NULL as the address
in that case.

fixes #1252
doc: clarify what the addr argument of uv_udp_recv_cb contains
test: close stream immediately on error

If there is an error in the uv_read_cb, close the uv_stream_t
immediately instead of waiting until the uv_write_cb, and only close the
stream in after_write() if it hasn't been closed already.