Enable `requires_grad` on input embedding to train on top of frozen layers
# What does this PR do?

## Motivation

In the context of `peft`, users currently needs to manually add a forward hook that enables gradient computation to the input after computing the embedding, for e.g. for `t5` one needs to call:
```python
def make_inputs_require_grad(module, input, output):
    output.requires_grad_(True)

model.get_input_embeddings().register_forward_hook(make_inputs_require_grad)
```


This PR makes the life easy for the users by wrapping this protocol in a single method `enable_input_require_grads` | Related: https://github.com/huggingface/peft/issues/80

cc @pacman100 

Wdyt @sgugger ? Maybe there is a better solution but not sure here, would love some guidance!
_The documentation is not available anymore as the PR was closed or merged._<|||||>Thanks everyone! Merging!