Modify download function to show progress based on size

This commit changes the algorithm for how the download sync works.
Specifically, it figures out which files must be downloaded before it
starts trying to download anything.  In this manner, it's possible to
calculate how much the total download will be, in contrast to having the
logic whether something should be downloaded or not within the download
function itself.

The upload functionality will come next.
Adds size-sensitive progress bar to uploads

Instead of relying on the file count for determining progress on uploads
and downloads, this commit determines how many bytes will be uploaded
and then sets the progress bar to increase by however many bytes were
uploaded after each file.

To accomplish this, some of the longer functions were split into smaller
components.  For example, it is imperative to be able to know how large
a sync will be before starting the sync, therefore it is not possible to
wait until on the individual file level to have the file check it it
should sync or not.  As a consequence, the control of figuring out what
should be sync'd and then the control of the transport of the bits are
now split into two different areas, whereas before they were one.
Print the error if an error occurs.

Adds the message from the error if and when an error occurs while
checking if a file needs to be downloaded.
Merge pull request #32 from gusennan/15_progress_bar

Run the progressbar based on file transfer size