This paves way for adding more metadata apart from handles, such as caches and so on. This commit also removes SocketHandle::EMPTY in favor of SocketHandle::default() since they are functionally identical.
- Add support for ICMP sockets - Add tests for ICMP sockets - Rename proto-<type> features to socket-<type> - Update documentation