Why don't we parameterize SocketOption with ChannelType (SocketOption[ChannelType]) so we don't need to use overloading?