If given an index, download that index. Each class should
only be responsible for one download. Store the downloaded file
in memory until WriteFile is called. If the receiver does not
have a file structure, this call will do nothing.
If given a time range (and optional list of indexes), use parent
receiver class FindIndexesByTime routine to get list of indexes
to download. Create a separate class for each resulting download and
use the resulting class to download a single index. The resulting
downloads should then be joined together into one large file rather
than separate files. If the receiver does not have a file structure
just download the relevant data.