Put file I/O through single thread.

Separated the file goroutines from download goroutines so we single thread the
file I/O but multithread the downloads.

Also, if the file already exists, check the file size is the same, and
overwrite if not.

And added another statistic for total bytes seen.