Issue title: How to decode generic without "sniffing" the body?
 Issue body: https://github.com/google/json_serializable.dart/blob/824950daf076600a7666bc5d451e9997dfd94462/example/lib/generic_response_class_example.dart#L30

I started Dart only 3 days ago so I am still having difficulties wrapping my head around. But I am not seeing a clean way to do this with only generics?

I can pass a `T Function(Object body) bodyToJson` when dealing with the API call but that function can't be set in `@JsonKey(fromJson: bodyToJson)`.

In the example, a `BaseResponse<SomeEntity>()` should be able to return a `BaseResponse` which has `data` as `SomeEntity` without the need for content "inspecting" which does not work in practice.


 Comments: 
 Comment 0: Are you still having this issue? Can you provide some more context?
 Comment 1: Without additional information, we are unfortunately not sure how to resolve this issue. We are therefore reluctantly going to close this bug for now. Please don't hesitate to comment on the bug if you have any more information for us; we will reopen it right away!
Thanks for your contribution.
 Comment 2: > Are you still having this issue? Can you provide some more context?

Yes, I worked around the issue somehow but I believe I couldn't really achieve the niceties I'm used to in Java/Jackson.

My apologies. I forgot about this issue. I will go thru the code base and try to come up with more context/sample for you in a few days.
{'source': 'GithubIssues', 'repo_name_with_owner': 'google/json_serializable.dart', 'issue_id': 863410730, 'repo_stars': 596.0}