Add a type-mismatch error to give more detail when the JSON is invalid because of the wrong type.

I had a property declared as `NSArray<MyProtocol>` instead of `NSDictionary<MyProtocol>` and JSONModel was not giving me any hints as to why the JSON was invalid (actually my model was wrong but I was blind to the error). It took ages to debug, so I added checking and more detailed error information in the userInfo when this type of error occurs. Now if anyone ever does this it will tell them exactly what the problem is. Includes two new unit tests to confirm the errors are generated correctly.