I applied the following terminology and changed the wording in the doc
accordingly:
* must not: If the parameter is of the value it *must not* be it either
hits an assert or crashes the system.
* may not: The value can be that value, but the function will return an
error.
This introduces a new alternative and better API to `conn`. It differs in the
following aspects:
* a common address type for both IPv4 and IPv6 addresses is introduced
* communication end-points are abstracted as end-point types `sock_x_ep_t`,
containing the address, its family, its port (if required for protocol) and
the interface identifier.
* All functions require some kind of state. Sending of datagrams to the same
source or replying to incoming datagrams is thus simplified
* TCP connection establishment was overall reworked: connected sockets and
listening sockets are now two distinct types. An accept on a listening socket
than yields a connected socket