Changed JsonDeserializer to look for and honor DeserializeAs attribute

I need to be able to map a property name on my model type to a different name in Json when deserializing.  I'm reusing the DeserializeAs attribute to do this and just having the JsonDeserialize check to see if the attribute exists, and if it does prefer that name over the models property name.  I added a test for this as well.