FX tracing improvement
# What does this PR do?

This PR improves significantly the way transformers models are traced by the HFTracer (`torch.fx`).
This has 2 major consequences:

- More model architectures can be supported
- When a model can be traced, the resulting GraphModule can take any input shapes out of the box (compared to what was done before where a lot of work was needed to enable dynamic axes for a given model), this is both easier and less bug prone.

Because of these changes the `symbolic_trace` signature becomes easier: 
`symbolic_trace(model: PreTrainedModel, input_names: Optional[List[str]] = None) -> GraphModule`

There is no need to specify the batch size, the sequence length or the number of choices (for multiple-choice) anymore.
The same thing can be said about the `HFTracer`, which can be instantiated exactly the same way as the regular `torch.fx.Tracer` can.
Hey, thanks for your PR @michaelbenayoun ! It seems there are a few failing tests (1096 :smile:), could you take a look at it?<|||||>Currently looking into it!
Sorry about that.<|||||>Fixed!<|||||>This issue has been automatically marked as stale because it has not had recent activity. If you think this still needs to be addressed please comment on this thread.

Please note that issues that do not follow the [contributing guidelines](https://github.com/huggingface/transformers/blob/master/CONTRIBUTING.md) are likely to be ignored.<|||||>Unstale comment<|||||>I am planning to try another approach to make both the code easier, and the tracing process cleaner, this will allow to add other models as well as to limit the number of bugs.
In the mean time, I think this can be merged because a few issues were posted to have `symbolic_trace` working for Pytorch 1.10, which this PR enables.