Should not exit during restore when timeout ocours (lp:#494677)

[Original report](https://bugs.launchpad.net/bugs/494677) created by **Tokuko (launchpad-net-tokuko)**
```
Hi,

humyo.de seems to be a bit buggy sometimes and in some cases seems to
timeout.
A restore should not fail just because one timeout occoured, duplicity
should just retry the retrieve the file.
The file being restored is severall gigabytes (a VMWare harddisk), so
having to restart the restore results in a couple of gigabytes additional
download.

Regards,
Tokudan

duplicity 0.6.06
Python 2.6.2
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=9.04
DISTRIB_CODENAME=jaunty
DISTRIB_DESCRIPTION="Ubuntu 9.04"
local Filesystem:
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3             219G  8.9G  199G   5% /
/dev/sda3 on / type ext3 (rw,relatime)

Traceback:

Traceback (most recent call last):
  File "/usr/local/bin/duplicity", line 1236, in <module>
    with_tempdir(main)
  File "/usr/local/bin/duplicity", line 1229, in with_tempdir
    fn()
  File "/usr/local/bin/duplicity", line 1183, in main
    restore(col_stats)
  File "/usr/local/bin/duplicity", line 538, in restore
    restore_get_patched_rop_iter(col_stats)):
  File "/usr/local/lib/python2.6/dist-packages/duplicity/patchdir.py", line
518, in Write_ROPaths
    for ropath in rop_iter:
  File "/usr/local/lib/python2.6/dist-packages/duplicity/patchdir.py", line
491, in integrate_patch_iters
    final_ropath = patch_seq2ropath(normalize_ps(patch_seq))
  File "/usr/local/lib/python2.6/dist-packages/duplicity/patchdir.py", line
471, in patch_seq2ropath
    misc.copyfileobj(current_file, tempfp)
  File "/usr/local/lib/python2.6/dist-packages/duplicity/misc.py", line
166, in copyfileobj
    buf = infp.read(blocksize)
  File "/usr/local/lib/python2.6/dist-packages/duplicity/patchdir.py", line
198, in read
    if not self.addtobuffer():
  File "/usr/local/lib/python2.6/dist-packages/duplicity/patchdir.py", line
223, in addtobuffer
    self.tarinfo_list[0] = self.tar_iter.next()
  File "/usr/local/lib/python2.6/dist-packages/duplicity/patchdir.py", line
330, in next
    self.set_tarfile()
  File "/usr/local/lib/python2.6/dist-packages/duplicity/patchdir.py", line
319, in set_tarfile
    self.current_fp = self.fileobj_iter.next()
  File "/usr/local/bin/duplicity", line 575, in get_fileobj_iter
    manifest.volume_info_dict[vol_num])
  File "/usr/local/bin/duplicity", line 596, in restore_get_enc_fileobj
    backend.get(filename, tdp)
  File "/usr/local/lib/python2.6/dist-
packages/duplicity/backends/webdavbackend.py", line 234, in get
    response = self.request("GET", url)
  File "/usr/local/lib/python2.6/dist-
packages/duplicity/backends/webdavbackend.py", line 108, in request
    response = self.conn.getresponse()
  File "/usr/lib/python2.6/httplib.py", line 950, in getresponse
    response.begin()
  File "/usr/lib/python2.6/httplib.py", line 390, in begin
    version, status, reason = self._read_status()
  File "/usr/lib/python2.6/httplib.py", line 348, in _read_status
    line = self.fp.readline()
  File "/usr/lib/python2.6/socket.py", line 395, in readline
    data = recv(1)
  File "/usr/lib/python2.6/ssl.py", line 96, in <lambda>
    self.recv = lambda buflen=1024, flags=0: SSLSocket.recv(self, buflen,
flags)
  File "/usr/lib/python2.6/ssl.py", line 222, in recv
    raise x
SSLError: The read operation timed out
```

Story points: 8.0