echo: Honor the bind address

This change is mostly useful for testing the echo server itself

Even though -b was passed to the echo-srv, echo_server_address() used
ECHO_SRV_IPV{4,6} unconditionally.
SO_PROTOCOL is platform-dependant

SO_PROTOCOL is not defined on all platforms. In particular, OSX doesn't
include it and so far I haven't found any compatible declaration.
Provide a compatible declaration of CMSG_ALIGN

Some platforms (like OSX) do support some of the CMGS macros, but don't
have a CMSG_ALIGN macro of their own.
define __APPLE_USE_RFC_3542 on OSX

Unless __APPLE_USE_RFC_3542 is defined on OSX, constants from RFC 3542
such as IPV6_RECVPKTINFO are not usable.
Silence cast-align warnings

Such as:
socket_wrapper/tests/echo_srv.c:606:32: warning: cast from 'struct sockaddr *' to 'struct sockaddr_in *' increases required
alignment from 1 to 4 [-Wcast-align]
      struct sockaddr_in *sinp = (struct sockaddr_in *)to;
                                 ^~~~~~~~~~~~~~~~~~~~~~~~