BSD sockets UDP uses 'headers' for all packets

BSD sockets wants to do both:
	socket, bind, {sendto,recvfrom}
and
	socket, bind, connect, {send,recv}

'headers' mode allows us to blindly sendto and recvfrom.  The last
chance we have to set this is in bind (though it makes more sense to do
so in socket).

We can only announce or connect once.  To be able to receive, we need to
have announced by the end of bind so that our entry is in the hash
table before the application knows which local port we're on.  So we'll
never be able to connect after doing a bind.

Connect still sets the sockets raddr (in the Rock), so all of our
send/recv calls will just go through sendto/recvfrom, and extract the
raddr from the Rock and put it in the 'headers'.

We could consider having calls to connect() clear the headers, and then
connect as normal, but that would require the kernel to let us change
from announced to connected.  I'm not willing to do that yet.

Also, this way, we can connect multiple times, changing the default
remote end, which is what you're supposed to be able to do.  You can't
send multiple connect messages to the kernel.

Note that the Rock code is not threadsafe, and that every send/recv
needs to extract the rock, which is O(number of rocks/fds).