Ping timeout support

I've added support for ping timeouts, as requested in issue #76. 

It may be worth reviewing the way I am triggering reconnects, since I've seen other pull requests use .disconnect(), although that doesn't seem right to me.