Move downloading logic into DownloadAgent

This uses the Agent provided by twisted instead of the HTTP1.0 web client.

The goal is to be able to pull in the progress of a file transfer
agent finally passing, but there needs to be an api for getting file transfer progress