Retry when etcd disconnects on a long read

etcd now times out on long reads, defaulting to 5m, per this commit: https://github.com/coreos/etcd/commit/084dcb5596d52a3a1386d59acced24286137e385

This patch reconnects on that server timeout.

urllib3 will return a ProtocolError on the server disconnect so we just catch that. However, we will be masking other cases of a ProtocolError. I'm not sure how else to handle this situation. Thanks!