Remove all network I/O from core

Currently, liblwm2m has the bulk of the network I/O in the application (select loop, socket creation, packet receive). But, DNS and packet transmission are still handled by the core.

These patches remove the remaining network functions from the core and remove the reliance on BSD socket headers.

The core handles three opaque variables for each connection:
        int socket, an identifier for the transport, never dereferenced by core
        uint8_t *addr + size_t addrLen, an opaque buffer used by the the application to identify a destination (this could be a struct sockaddr/socklen pair, or something entirely different like a telephone number for SMS).

Hopefully, it will now be easier to use liblwm2m on embedded targets without BSD sockets and to bind to high level languages which want to handle socket juggling themselves.

Adding DTLS between core and the network layer may be more straighforward also.