Changes the name of the LocalFile struct

This commit changes the name of the LocalFile struct and some of its
fields. The reason for this change is it better describes what the
struct is and reduces first-time reader ambiguity.
Add a ByteCountingReader and tests

This commit adds a ByteCountingReader that counts the total number of
bytes that have passed through it.  It will be used to subtract
upload/download progress when an upload/download fails partially
through.
Count the bytes that are uploaded for progress

If the upload fails then the progress must change.  The change depends
on the type of failure.  If the failure is temporary and an attempt will
be made to re-upload the file, then the progress from that first attempt
is subtracted from the total progress.  Otherwise, if no further attempt
will be made, then the total expected byte uploads will be subtracted by
that file's size.
Be sure to count the directories in the total progress
Merge pull request #37 from gusennan/35

Addresses issue #35