Added class Json/JavaScriptPrimitiveConverter.cs as an abstract base class along the same lines as JavaScriptSerializer.cs, but where the serialized value is simply an 'object' and not an 'IDictionary<string, object>'.
Updated Json/JsonSettings.cs to store a list of JavaScriptPrimitiveConverter objects in a list exposed by new property PrimitiveConverters.
Added a field _primitiveConverterList to Json/JavaScriptSerializer.cs to store a list of enumerable sequences of primitive converters, along the same lines as _converterList, added accessor method GetPrimitiveConverter following the same pattern as GetConverter, and added RegisterConverters overloads that accept sequences of JavaScriptPrimitiveConverter implementations and registers them.
Updated the JavaScriptSerializer constructor that accepts a parameter "registerConverters" to actually pay attention to it.
Updated the ConvertToType method in Json/JavaScriptSerializer.cs to check for a primitive converter before doing any other analysis
Updated SerializeValueImpl in Json/JsonSerializer.cs to check for a JavaScriptPrimitiveConverter in the owner JavaScriptSerializer object after all other serialization, but before emitting the value. (This places it in the same point in the pipeline as in deserialization.)
Updated Responses/DefaultJsonSerializer.cs and ModelBinding/DefaultBodyDeserializers/JsonBodyDeserializer.cs to register primitive converters in addition to regular converters when initializing the JavaScriptSerializer that will be used to serialize or deserialize request/response data.