Add support for more collections (dotnet/corefx#38319)
* Add support for ISet
* Add support for IEnumerable, IList, and ICollection (non-generic)
* Add support for non-generic IDictionary
* Address review feedback
* Remove unused exception resource and remove ISet<ISet<T>> (de)serialization limitation
* Add support for non-generic collections that have a constructor that takes an IEnumerable or IDictionary
* Condense branches for types we need to set runtime types for
* Add support for non-generic collections that have a constructor that takes an IList
* Add support for Hashtable and SortedList
* Verify sorted dictionary works
* Add support for KeyValuePair
* Create concrete instance of types Foo where possible
* Use generic constructor for KeyValuePair
* Fix KeyValuePair creation in tests
Commit migrated from https://github.com/dotnet/corefx/commit/
4aece7a121a164e68954d79a0ec2569bd71cf125