Enhance TFTrainer.save_model()
# What does this PR do?

@jplu , could you close PR #7597, please? This PR is a clean one, without the file `modeling_tf_utils` being changed at all.

Currently, TFTrainer.save_model() raises errors if the model is not TFPreTrainedModel . However Trainer works fine with torch.nn.modules.Module.

This is a step to make TFTrainer work with usual tf.keras.models.Model models. The idea (from @sgugger) is that a user is building their own models that work like ours (e.g., return the loss as the first output) and can train them with Trainer.

Furthermore, a SavedModel is also saved using tf.saved_model.save().

For @jplu and @sgugger .
> 
> 
> Awesome! Did you try it with a usual training example to see if everything is ok?

Yes, with example/text-classification.
I didn't check yet with a usual `tf.keras.models.Model` (i.e. not TFPretrainedModel). But when I continue with `test_trainer_tf.py`, it will be tested.<|||||>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.<|||||>Hi, @sgugger & @LysandreJik ,

I didn't realized that this PR is not merged into master. Since it has been for some time, I rebased the branch. All the suggestions from @sgugger  are done in the latest version.

It would be great if you can merge  this PR. Thanks!<|||||>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.