Add Eq, Typeable, Generic instances to socket types.

This change allow to use Socket types in other data
structures to represent information about sockets,
and possibility to use generic instances in other
packages with no fear of overlapping.