Pass the downloader a proxy object instead of the resource

We need to limit the interface that is exposed to the downloader in
order to make future changes easier.

This will be important for work on new features, such as selecting
a mirror from the command line.

In the future, the existing Resource class will probably be split into
multiple classes.
CurlDownloadStrategy: initialize attributes in initializer

The downloader is instantiated on-demand, so we no longer need the lazy
initialization here.