Explicitly validate default values

I am dealing with a model object that requires its `messageID` property to be set, yet there is not sane default value that I could chose in `-[RBMessage init]`. If `-[RBMessage initWithDictionary:error:]` is invoked without a `messageID` value in the dictionary, the current implementation will simply ignore that property.

I would then have to override `-[RBMessage initWithDictionary:error:]` and check whether all fields been set properly in the superclass' implementation. However, I'd much rather use the existing KVO validation logic of `-[RBMessage validateMessageID:error:]`.

I understand that this is not the fastest possible implementation, but I wanted to start the discussion with the smallest viable change set :wink: