Streaming client to use same timeout/retry semantics for https as for http

Currently retries after timeouts do not work for https. Timeouts when using https emanate from the ssl module, are of type ssl.SSLError and contain a certain message.

Obviously it'd be preferable to have been able to distinguish the timeout exceptions by their type alone, but alas.

The way I attempt to ensure compatibility with python 2.5 (which doesn't necessarily have ssl) is slightly unorthodox, but my assumption is that people won't be using https without the ssl module being available; a safe assumption, it seems to me.