Customize type attribute

The Json.Net library, when using a setting other than ```TypeNamingHandling.None```, emits and interprets ```$type```properties to support polymorphism. The name ```$type``` is hardcoded.

This PR adds the capability for clients to customize the name of the  ```$type``` property, which allows them to leverage the existing polymorphism-mechanisms for consuming REST APIs that also rely on polymorphism, yet use disscriminating properties named other than ```$type``` (such as ```_type```).