generate() always starts with bos_token_id
Author: j-min
Pull request: no

## Environment info
<!-- You can run the command `transformers-cli env` and copy-and-paste its output below.
     Don't forget to fill out the missing fields in that output! -->
     
- `transformers` version: 3.4.0
- Platform: Ubuntu 16.04
- Python version: 3.7
- PyTorch version (GPU?): 1.6 GPU
- Tensorflow version (GPU?): Doesn't matter
- Using GPU in script?: Doesn't matter
- Using distributed or parallel set-up in script?: Doesn't matter

### Who can help
<!-- Your issue will be replied to more quickly if you can figure out the right person to tag with @
 If you know how to use git blame, that is the easiest way, otherwise, here is a rough guide of **who to tag**.
 Please tag fewer than 3 people.
 
 albert, bert, GPT2, XLM: @LysandreJik 
 tokenizers: @mfuntowicz
 Trainer: @sgugger
 Speed and Memory Benchmarks: @patrickvonplaten
 Model Cards: @julien-c
 Translation: @sshleifer
 Summarization: @sshleifer
 TextGeneration: @TevenLeScao 
 examples/distillation: @VictorSanh
 nlp datasets: [different repo](https://github.com/huggingface/nlp)
 rust tokenizers: [different repo](https://github.com/huggingface/tokenizers)
 Text Generation: @TevenLeScao
 blenderbot: @mariamabarham
 Bart: @sshleifer
 Marian: @sshleifer
 T5: @patrickvonplaten
 Longformer/Reformer: @patrickvonplaten
 TransfoXL/XLNet: @TevenLeScao 
 examples/seq2seq: @sshleifer
 examples/bert-loses-patience: @JetRunner
 tensorflow: @jplu
 examples/token-classification: @stefan-it
 documentation: @sgugger
 -->

-  TextGeneration: @TevenLeScao 
-  T5: @patrickvonplaten

## Information

Model I am using (Bert, XLNet ...): T5

The problem arises when using:
* the official example scripts: [T5ForConditionalGeneration Doc](https://huggingface.co/transformers/model_doc/t5.html?highlight=t5#transformers.T5ForConditionalGeneration)

## To reproduce

Steps to reproduce the behavior:

```python3
from transformers import T5Tokenizer, T5ForConditionalGeneration
tokenizer = T5Tokenizer.from_pretrained('t5-small')
model = T5ForConditionalGeneration.from_pretrained('t5-small', return_dict=True)
input_ids = tokenizer('The <extra_id_0> walks in <extra_id_1> park', return_tensors='pt').input_ids
labels = tokenizer('<extra_id_0> cute dog <extra_id_1> the <extra_id_2>', return_tensors='pt').input_ids
outputs = model(input_ids=input_ids, labels=labels)

model.generate(input_ids)[0]
>>> tensor([    0, 32099,  2447,   704, 32098,     8, 32097,  2447,     5,     1]) 
# <- start with 0 = pad_token_id = decoder_start_token_id of T5 


input_ids = tokenizer("summarize: studies have shown that owning a dog is good for you ", return_tensors="pt").input_ids  # Batch size 1
outputs = model.generate(input_ids)
outputs
>>> tensor([[   0, 2116,   43, 2008,   24,  293,   53,    3,    9, 1782,   19,  207,
           21,   25,    3,    5,    1]])
# <- start with 0 = pad_token_id = decoder_start_token_id of T5 
```


<!-- If you have code snippets, error messages, stack traces please provide them here as well.
     Important! Use code tags to correctly format your code. See https://help.github.com/en/github/writing-on-github/creating-and-highlighting-code-blocks#syntax-highlighting
     Do not use screenshots, as they are hard to read and (more importantly) don't allow others to copy-and-paste your code.-->

## Expected behavior

Generation outputs should not start with 0 (= pad_token_id = decoder_start_token_id of T5)
```python3
>>> tensor([ 32099,  2447,   704, 32098,     8, 32097,  2447,     5,     1]) 
>>> tensor([[ 2116,   43, 2008,   24,  293,   53,    3,    9, 1782,   19,  207,
           21,   25,    3,    5,    1]])
```

<!-- A clear and concise description of what you would expect to happen. -->

## Analysis / Suggestion
This happens because the `input_ids` are initialized with [bos_token_id](https://github.com/huggingface/transformers/blob/v3.4.0/src/transformers/generation_utils.py#L329) or [decoder_start_token_id](https://github.com/huggingface/transformers/blob/v3.4.0/src/transformers/generation_utils.py#L432) then iteratively updated during `.generate()`
But should `.generate()` return the first token? It is confusing and makes it hard to debug since `tokenizer.decode()` hides this behavior.
It would be better to exclude the first token and just return `output [:, 1:]` in [the last line of generate()](https://github.com/huggingface/transformers/blob/v3.4.0/src/transformers/generation_utils.py#L512).

Comments:
Hey @j-min, I don't think we will change this behavior because a) huge backward breaking change b) I think it's important to understand that generate **has** to start with a BOS/decoder_start_token_id (see Encoder-Decoder blog post: https://huggingface.co/blog/encoder-decoder)

Also you could add `skip_special_tokens=True` to the decode method to not return this token