Give the sockbuf structure its own header file and supporting source file.
Move all sockbuf-specific functions from kern/uipc_socket2.c into the new
kern/uipc_sockbuf.c and move all the sockbuf-specific structures from
sys/socketvar.h to sys/sockbuf.h.
Change the sockbuf structure to only contain those fields required to
properly management a chain of mbufs. Create a signalsockbuf structure
to hold the remaining fields (e.g. selinfo, mbmax, etc).
Change the so_rcv and so_snd structures in the struct socket from
a sockbuf to a signalsockbuf.
Remove the recently added sorecv_direct structure which was being used
to provide a direct mbuf path to consumers for socket I/O. Use the newly
revamped sockbuf base structure instead. This gives mbuf consumers
direct access to the sockbuf API functions for use outside of a struct
socket. This will also allow new API functions to be added to the sockbuf
interface to ease the job of parsing data out of chained mbufs.