Fix errno references when handling socket errors

When using socket functions, `sockerrno` is supposed to be used to retrieve the error code as opposed to `errno`, so that it is translated to the correct call on Windows (`WSAGetLastError()` - Windows does not update `errno` on socket errors). Unfortunately, the use of `sockerrno` is inconsistent throughout the tinc codebase, as `errno` is often used incorrectly on socket-related calls.

This commit fixes these oversights, which improves socket error handling on Windows.

This was originally discovered in #20.