Download assets directly to the specified cache_dir
## 🚀 Feature

```
import torch
from transformers import *
TRANSFORMERS_CACHE='/path/to/my/transformers-cache'
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased', cache_dir=TRANSFORMERS_CACHE) 
```

Actual behavior: It downloads the asset into a temp folder and then copies it to the specified cache_dir.

Proposed behavior: Download the asset directly to the specified cache_dir.

Impacted code part: https://github.com/huggingface/transformers/blob/master/transformers/file_utils.py#L295-L322

## Motivation

We have an environment setup where the tmp folders have limited space, because it is not a mounted docker volume. If the `"asset size" > 10GB - "docker image size"` then it won't be able to download the asset. (The 10GB limitation is a docker limitation)


I have read the comment part of the reference code:
```
# Download to temporary file, then copy to cache dir once finished.
# Otherwise you get corrupt cache entries if the download gets interrupted.
```
So I would change my proposal:
* Either let it be configurable to skip the tmp folder and download directly to the cache folder -> the user will know what he is doing and will know that the asset could get corrupted
* Or check the file in the cache before usage - e.g. using checksums
* Or write "download has started" and "download has finished" information to the meta data file that can be checked before asset usage.
<|||||>I would propose to download to the cache_dir with a specific temporary name (like a `.part` suffix) and copy + rename at the end.

Probably best to activate that with an option `use_cache_dir_as_tmp`. To not clutter the cache dir with temporary files in the default settings.

Do you want to submit a PR for that? Would be happy to review it<|||||>Yes that is also a good approach. For now, we seem to be okay with this limitation, but I'll do a pr if we face this as an issue or have some free time.<|||||>Same problem here. On cluster, /tmp folder is small. Keep getting no space on device.<|||||>I fixed this in b67fa1a8d2302d808ecb9d95355181eaf21ee3b6.<|||||>Until there's a release with this fix, you can set $TMPDIR to an appropriate location if /tmp is too small.<|||||>Cool, thank you @aaugustin !