Exponential backoff, partial uploads & more:

 - implemented exponential backoff, limited at 10 attempts (maxTries);
 - drastically reduced the number of cases where we used os.Exit, this
   in turned allowed to...
 - introduced partial uploads. If a file was successfully uploaded, the
   cache file will reflect that, regardless of what errors other files
   had;
 - added tests, especially for upload related functionality.