Fix bug where times were being compared with ==.

This was causing unnecessary MD5 hashing of local files when
downloading from Drive.

Also improved the naming of the lastsynctime variable (now
“driveModificationTime”.
Bugfix: update local modification time from Drive

Before, when we considered downloading a file from Drive because the
Drive version was newer than the local version but it turned out that
the files matched MD5 hashes, we weren’t updating the local
modification time to match the modification time from Drive. This
in turn meant that we would endlessly keep on doing MD5 hashes of the
local file on subsequent download runs.
Update Drive download path to be io.Reader based.

Specifically, we no longer load entire files into []byte arrays
before decrypting them, etc.  Now, we take the io.Reader returned
from the http GET request, wrap it in an io.Reader that handles
decryption if needed, and then io.Copy it out to the destination
file on disk.

Peak memory use on downloads is generally(*) just a few MB now.

(*) We still load files on disk into []byte arrays to compute MD5
hashes of them; this will be fixed in a later commit.
Fix bug in tryToHandleHTTPError

The debug path would try to dereference a nil http.Response pointer.
Improve error reporting for uploads/downloads
Rewrite upload path to be io.Reader-based.

Now, we never buffer entire files in memory; memory use is generally
a handful of MB, even when working with large files. Fixes issue #13.

Rate-limiting is now possible for downloads. Finishes issue #1.

Fixed/improved a number of details related to error handling, which should
help with issue #6.

(Unfortunately, this turned into a fairly large/intertwined change.)
Cleanup various nits found by golint, improve comments.
Improve debug/verbose printing.

No more “if test per instance”, but just vector out to a clever
Printf() that keys off of whether debug/verbose has been set.
README.md updates.

Updates for rate-limiting improvements, fixed some typos, updated documentation
about how the local modified time is stored.
Bugfix: only create LimitedReader when bandwidth is limited.

This was casing downloads in the unlimited case to sit in an infinite
loop, thinking that they needed an allocation of bandwidth.  Now we
only create a LimitedReader when we need one (and when there is a task
periodically doling out bandwidth.)
Fix crash when only downloading directory hierarchies (without any files).

The ProgressBar class was panic()ing if given a count of zero work items..