Updated the logic of the parsing method to reduce the number of unnecessary parsing attempts.

In the process of pulling FDModel out into its own repository one major thing was overlooked. Before when we were attempting to convert a NSString to local models we were only asking the model class block on the FDDataClient what model class the string could be. When we pulled all of that out into FDModelProvider we inadvertently made it so that first the model class block gets asked and then the delegate gets asked. This was causing strange scenarios where a string was being parsed into nil or even a empty instance of FDModel where the property being set was a NSString so there was no point in even attempting to parse the object in the first place.

Thanks to a lot of input from @tapi we figured out that the FDModelProvider seemed to be doing a lot of unnecessary transforms. Any object that was being converted was quickly checked to see if there existed a local transformer for it and if there didn't then it was run directly through our transformation procedure. But why do that blindly? If the property being set is a NSString and the object being parsed is a NSString there is no need to run it through our transformation method because the best case scenario is you just get the same string back and the worst case is that you somehow loss the string.

Armed with this knowledge we came to the realization that all of the "common transforms" we were doing to make things easier (i.e. automatically transforming a NSString to a NSURL) should actually be the first thing we try if there is no local transformer. Once all of those attempts to transforms fail we should only then attempt to run the object through our transformation procedure if it is a collection object and the property type being set is the same collection type. Otherwise we are doing pointless work.

So that lead to the rewrite in this commit. I've performed tests and all the correct parsing logic from before seems to remain and we have removed a large number of pointless transformations that were causing loss of data.
FDModel no longer calls setValue:forKey: when it will obviously throw an exception.

initWithCoder: and copyWithZone: on FDModel were attempting to call
setValue:forKey: on properties that are readonly and have no backing
instance variable which means the call will always throw an exception.