PT CausalLM models config issue
## Environment info

- `transformers` version: 4.13.0.dev0
- Platform: Windows-10-10.0.19042-SP0
- Python version: 3.9.5
- PyTorch version (GPU?): 1.9.0+cpu (False)
- Tensorflow version (GPU?): 2.7.0 (False)
- Flax version (CPU?/GPU?/TPU?): not installed (NA)
- Jax version: not installed
- JaxLib version: not installed
- Using GPU in script?: No
- Using distributed or parallel set-up in script?: No

### Who can help

@patrickvonplaten @sgugger 

## Information

Several PT causal LM models set `config.is_decoder = True` for a deeply copied `config` after `super().__init__(config)`.
Yet for doc examples in those model files, there are
```
model = XXXForCausalLM.from_pretrained('...', add_cross_attention=False)
assert model.config.is_decoder, f"{model.__class__} has to be configured as a decoder."
```
which fail, since `XXXForCausalLM.config.is_decoder` is `False`.

For example, `BartForCausalLM`:

```
class BartForCausalLM(BartPretrainedModel):
    def __init__(self, config):
        super().__init__(config)
        config = copy.deepcopy(config)
        config.is_decoder = True
        config.is_encoder_decoder = False
        self.model = BartDecoderWrapper(config)
```

And this example will fail
```
Example::

    >>> from transformers import BartTokenizer, BartForCausalLM

    >>> tokenizer = BartTokenizer.from_pretrained('facebook/bart-large')
    >>> model = BartForCausalLM.from_pretrained('facebook/bart-large', add_cross_attention=False)
    >>> assert model.config.is_decoder, f"{model.__class__} has to be configured as a decoder."
    >>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
    >>> outputs = model(**inputs)

    >>> last_hidden_states = outputs.last_hidden_state
```

## To reproduce

Just run the above example:

```
from transformers import BartTokenizer, BartForCausalLM

tokenizer = BartTokenizer.from_pretrained('facebook/bart-large')
model = BartForCausalLM.from_pretrained('facebook/bart-large', add_cross_attention=False)
assert model.config.is_decoder, f"{model.__class__} has to be configured as a decoder."
inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
outputs = model(**inputs)

last_hidden_states = outputs.last_hidden_state
```

Error:
```
Traceback (most recent call last):
  File "C:\Users\33611\Desktop\Projects\transformers-dev-2\transformers\check_cross.py", line 5, in <module>
    assert model.config.is_decoder, f"{model.__class__} has to be configured as a decoder."
AssertionError: <class 'transformers.models.bart.modeling_bart.BartForCausalLM'> has to be configured as a decoder.
```

## Expected behavior

The example should work. 

- Either `config.is_decoder` and `config.is_encoder_decoder` should be set before `super().__init__(config)` 
- or we should remove `assert model.config.is_decoder, f"{model.__class__} has to be configured as a decoder."`

I think the first is what is intended to be.

## Other

I can open a PR for this once having feedback.