Fix usage of MSG_DONTWAIT in Win32

WIN32 doesn't support MSG_DONTWAIT, need to swith fh to nonblockng mode manually.
For Unix still use MSG_DONTWAIT because of fewer syscalls
optimize __try_read_sock()

As Pavel Shaydo noticed:
The whole __try_read_sock subroutine looks a bit inefficient to me, you are
reading data with MSG_PEEK, just to check if there's any, and then you
throwing it away. Why not save it into {__buf} and avoid reading it again?