Re-factoring download and extraction to enable hash based caching

The `remote_file` helper supports sending headers with checksum (and timestamp) to prevent downloading files if they are present already and matching the one to be downloaded. By not moving the downloaded zip files before extracting we can let this optimisation kick in. With an initial chef run there's no difference. However if you want to update a server by running recipes, it accelerates the process if you don't have to download the files again, but only if they are matching. I disabled the modification date based caching, since it might occur that the download is aborted leaving a damaged file with newer timestamp in place.
If you feel that this change backward compatibility, I'm happy to change the default value for the attribute controlling this behaviour to keep downloading the file even if there's a match.
I think it's redundant to use `use_conditional_get` AND `use_etag` and `use_last_modified`. Just using the latter two should work, right?
```
use_etag !node['aws_developer_tools']['force_download?']
use_last_modified false
```