More graceful handling of remote errors

* Added retry decorator (used in source_cache.py)
* Slight refactoring of git fetching
* Disabling progress bar if content headers not available
* Friendlier error messages from main for remote fetch errors

Suggested-by: tomspur <tomspur@fedoraproject.org>