added various elements for #8 (and by the way added some features for #7)
 - forceDownload to bypass the caching mechanism
 - retries are now correctly handled (using standard HTTP Client features)
 - I never thought about that, but the caching mechanism totally work with HTTPClient (as it is defined in main method)