Feature/15

Quick and hackish solution, but hey - it works. 

This changeset allows having multiple open client connections to one server instances, each connection tracking it's own messages and each with distinct lifecycle. 

Also, I've introduced default timeouts for both connecting to the remote server and waiting for the response (though this is hackish still).

Next pull request will deal with refactoring & cleaning the code, along with polishing it a little.