[firewalled env] OFFLINE mode
This is done - we now have:

* `HF_DATASETS_OFFLINE=1`
* `TRANSFORMERS_OFFLINE=1`

Documented:  [here](https://huggingface.co/transformers/master/installation.html#offline-mode)

The transformers-specific issue is here:
-------------------


Similar to `datasets` https://github.com/huggingface/datasets/issues/1939 `transformers` needs to have an OFFLINE mode where it can work w/o ever making a network call to the outside world.

This issue comes from a need to be able to run `transformers` in a firewalled env, which currently makes the software hang until it times out, as it's unable to complete the network calls.

We assume `DATASETS_OFFLINE=1` will already deal with datasets and metrics as I proposed at https://github.com/huggingface/datasets/issues/1939, so this issue is specific to `transformers` only.

I propose the following approach to solving this problem, using the example of `run_seq2seq.py` as a sample program. There are 2 possible ways to going about it.

## 1. Manual

manually download model files, that is transfer to the firewalled instance and run:

```
TRANSFORMERS_OFFLINE=1 run_seq2seq.py   --model_name_or_path ./t5-small-local ... 
```

`transformers` must not make any network calls and if there is a logic to do that and something is missing it should assert that this or that action requires network and therefore it can't proceed.

## 2. Automatic

In some clouds one can prepare a data storage ahead of time with a normal networked environment but which doesn't have gpus and then one switches to the gpu instance which is firewalled, but it can access all the cached data. This is the ideal situation, since in this scenario we don't have to do anything manually, but simply run the same application twice:

1. on the non-firewalled instance:
```
run_seq2seq.py  --model_name_or_path t5-small ...
```

which should download and cached everything.

2. and then immediately after on the firewalled instance, which shares the same filesystem:
```
TRANSFORMERS_OFFLINE=1 run_seq2seq.py  --model_name_or_path t5-small ...
```

and the model should be cached by the invocation number 1 and any network calls be skipped and if the logic is missing data it should assert and not try to fetch any data from online.

## Specifics

1. We already have `local_files_only=True` for all 3 `.from_pretrained()` calls which make this already possible, but this requires editing software between invocation 1 and 2 in the Automatic scenario which is very error-prone. Thus I propose that `TRANSFORMERS_OFFLINE=1` will turn these flags True from the ouside of the system.

2. There are other issues to check, for example in some `examples` scripts we have:

```
with FileLock(".lock") as lock:
    nltk.download("punkt", quiet=True)
```

which also issues a network call and under `TRANSFORMERS_OFFLINE=1` it should be skipped and replaced with a check that the corresponding nltk data is already available.

Thanks.

@julien-c, @sgugger, @LysandreJik 
This is done.