Support polymorphic value-type converters and add validation on values returned by custom converters (#40914)
* IL emit Box/Unbox in member access
* Test case for object converter
* Test case for class with primitive members and object converter
* Address feedback
* Fixed issues with JsonConverter<object>and nullable value-types
* Address feedback
* Fix test for .NETStandard version
* Fix #41146
* Accidentally commited the local test hack
* Throw JsonException when a deserialized value cannot be assigned to the property/field
* Fix merge
* Fix merge again
* Undo Fix #41146
* Consolidate nullable annotations
* Addressed feedback
* Addressed feedback