Sequences of events in the daemon
=================================

Main loop
---------

Massive download
----------------

File added to batch
Start transferring file
FTP: get file size
     create new connections and add to batch
HTTP: get header
      parse file size
      create new connections and add to batch
Transfer data in files as normal
When any file completes, check if all MD files have completed
If so, despool the master (if necessary) then append all children
Call FileComplete() on the master but NOT the children
Remove all children from batch, and remove the master if we want to remove
  complete files

If the user cancels, the master will always be removed, cancelling all the
  children (cancelling part of the dl is not meaningful)
If the user pauses, only the master will be paused (currently)
