Allow fields to override the key used for serialization and deserialization

This is useful when you want to use a naming convention on the model that is different from the API.