Handle timeouts and incomplete downloads better

chanarch.py (ChanThread):
  download_files():
    - Remove obsolete totsz argument from Downloader call

chanarch.py (Downloader):
  __init__():
    - Initialize connection information here, since creating
      HTTP(S)Connection objects doesn't connect to the server
      immediately

  download():
    - Remove totsz argument
    - Use an HTTP HEAD request to get the filesize, instead of relying
      on an optional totsz argument (4chan's JSON doesn't always have an
      (accurate?) filesize)
    - Remove connection initialization, since that's now in __init__()
    - Use file position to tell the file size, rather than relying on
      os.path.getsize(), which doesn't account for any buffered data and
      can be a little smaller than it should be
    - Resume downloading based on filesize, rather than 416 status codes
    - Retry downloading if the filesize doesn't match what the server
      told us
    - Transparently catch SSL timeouts and retry the download