Special case the "id --- objectID" propertyName to columnName conversion.
Column names are already in underscore form, so we don't need perform another conversion for dictionary keys.
When preparing dictionaryRepresentation  and unsavedDictionaryRepresentation, make sure we call decode on the objects before adding them to the dictionary.
Also, when decoding, if the object is already of the correct type, return without attempting to transform it.