Populate non-immutable collections directly on deserialize (dotnet/corefx#41482)
* Populate non-immutable collections directly on deserialize
(rather than storing in temporary collections and using converters to
create and populate instances)
* Fix deserilizing nested dictionaries
* Don't get add method for types we can populate without reflection; fix failing tests
* Misc perf changes
* Additional changes
* More changes
* Address review feedback
* Address feedback
Commit migrated from https://github.com/dotnet/corefx/commit/
2c06259cf2400704e550a74bf7b044159c2fcce5