Implement Linux-variant of MSG_TRUNC flag used in `recv()`, `recvfrom()` and `recvmsg()`.
Posix defines `MSG_TRUNC` as an //output// flag, indicating packet/datagram truncation. Linux extended it a while (~15+ years) ago to act as input flag, making the returned number of bytes being the full packet size.
It's a (relatively) popular pattern to do `recvmsg( MSG_PEEK | MSG_TRUNC)` to get the packet size, allocate the buffer and issue another call to fetch the packet. In particular, it's popular in userland netlink code, which is the primary driving factor of this change.
This diff implements the aforementioned behaviour for SOCK_DGRAM sockets (udp, unix, all `soreceive_generic()` users).