Add NS_REQUIRES_PROPERTY_DEFINITIONS declaration to CBLModel

This will catch a common bug where someone implementing a concrete
model class forgets to declare a document property as @dynamic.

The annotation will trigger a compiler warning in this situation, i.e.
whenever a subclass doesn't explicitly provide an @dynamic (or
@synthesize or accessor method) for a property it declares.
Type-check CBLModel getters for string/array/dict properties

CBLModel dynamic properties of type NSString, NSArray, NSDictionary, NSNumber
now type-check the value in the document. If it's not of the correct type, the
property value will be nil.
This is very useful when dealing with other platforms or apps that are in the habit of
setting empty properties to a JSON 'null' value instead of just leaving them out.
Fixes #419