[Seq2Seq Generation] Call encoder before expanding input_ids
Proposing to call model.encoder before expanding `input_ids` to `effective_batch_size*num_beams`.

For Bart, this saves 1.5 GB of GPU mem on batch_size=6. Savings probably similar for T5 (untested).

Requires knowing which index of the encoder_outputs is associated with the batch dim (we need to expand this dimension), which is different between `Bart` and `T5`. This difference is encoded in the `self.encoder_outputs_batch_idx` variable.


This PR is WIP because `encoder_outputs_batch_idx` could be avoided if we transposed Bart's encoder_outputs, which I haven't tried. 

Like the change a lot! 
One question I asked myself: With this change the `encoder_outputs` which are the same point to the same memory address -> could that lead to problems? Probably not because the `encoder_outputs` are never changed, right? 

I'd just propose some renaming.