Fix connection init

as is, the library fails/crashes under the very common case of trying to connect to a server that doesn't exist (or isn't reachable).

this tries to fix it by handling a few extra exceptions in the _SocketIO class.

it's similar to #20, but I kept all the exception handling in the _SocketIO class, and added a ```timeout``` parameter that gets passed down to the call to requests.get()