Added tag groups to readable/writeable sockets

Now recv can only be invoked on sockets which only support the
operation. Same for sent. Check the Socket.{recv,send} types to see
which operations a socket supports