Support for private models from huggingface.co
Add a `use_auth_token` flag (or string) to all `from_pretrained` entry points, to specify token to use as Bearer authorization for remote files. 

- if it's a string, use it
- If it's true, will get token from `~/.huggingface/token` (will throw if no token there)

You can test this with:

```python
model = AutoModelForMaskedLM.from_pretrained("pierric/hf-private", use_auth_token=True)
```

We'll add unit tests down the line but need to think about which environment those tests are going to hit.

⚠️ For now, I decided against adding token by default to all calls if user is logged in. Let's discuss though!
@patrickvonplaten I don't follow here. In this PR we want to have a way to either pass a token directly, or to opt in to use the one that's store in `~/`. Don't see how I can do that with just an optional string?<|||||>> @patrickvonplaten I don't follow here. In this PR we want to have a way to either pass a token directly, or to opt in to use the one that's store in `~/`. Don't see how I can do that with just an optional string?

I might have misunderstood a bit what constrains there are on the functionality. I thought, the following logic is possible and makes sense here:

- If user passes a string `use_auth_token`, then use this as the token
- Else look for token in `~/.huggingface`:
          - if there is no token and model is private -> throw error
          - if there is no token and model is **not** private -> load the model as usual
          - if there is a token -> use this one

Not sure if there is something I am completely overlooking here in the logic though, *e.g.* if we cannot know before hand whether the model is private or not
<|||||>> > @patrickvonplaten I don't follow here. In this PR we want to have a way to either pass a token directly, or to opt in to use the one that's store in `~/`. Don't see how I can do that with just an optional string?
> 
> I might have misunderstood a bit what constrains there are on the functionality. I thought, the following logic is possible and makes sense here:
> 
> * If user passes a string `use_auth_token`, then use this as the token
> * Else look for token in `~/.huggingface`:
>   - if there is no token and model is private -> throw error
>   - if there is no token and model is **not** private -> load the model as usual
>   - if there is a token -> use this one
> 
> Not sure if there is something I am completely overlooking here in the logic though, _e.g._ if we cannot know before hand whether the model is private or not

Ok never mind - as discussed offline this would require more features to add which is out-of-scope for this PR -> so LGTM!<|||||>Also cc'ing @borisdayma as this PR adds a `exist_ok` param to `HfApi.create_repo()`