Move the socket internal connection to it's own method
Capture Thread exceptions when running async
Don't set Thread.abort_on_exception = true

It's not the library's responsibility to do that, even if
Thread.abort_on_exception = true is generally a good thing.
Rework connection a bit
Merge pull request #34 from pusher/rescue-thread-exceptions

Sends socket exceptions as 'pusher:error' events when async