socket_timeout_ms option

This PR fixes the problem of hanging producer when connection between client and Kafka cluster is broken.

## How to reproduce the problem

1. Start client on client machine and Kafka on server machine connected to each other over network.
2. Run Poseidon on client machine and connect to the Kafka
3. Disconnect server machine from network
4. Produce the message

## What happens?

Poseidon waits in Socket#read. The problem is that Socket never realizes that connection is actually broken.

## What I expect

I would like Poseidon to raise an exception so I am notified about connectivity problem.

This problem has been fixed by @purbon at @Sponsorpay - I just refactored and prepared PR