Merge pull request #23 from RoadRunnr/socket_options

various fixes and enhancements
randomize test cases where multiple socket connections are involved

The test cases always processed the recv statemtn in the same
order as the original outgoing message and used the same
message for all clients. This had the potential to miss problems
where message where returned to the wrong client.
It now send a diffent message to each peer and checks that it did
recieve the correct message back.