Implicit validation

As per #242 

This validates properties assigned by `MTLJSONAdapter` by injecting an implicit `NSValueTransformer` that fails if its expected class is not met and passes the value through otherwise.

It's somewhat of an abuse of `NSValueTransformers`, depending how you look at it, but it only requires very minimal additions to `MTLJSONAdapter` and could easily by adopted by other (external) adapters.

#### TODO

- [x] Add a test for `id` properties, I think these are currently checked against `NSValue`
- [ ] Document the changed behavior of `-transformerForModelPropertiesOfClass:` and `-transformerForModelPropertiesOfObjCType:`

Fixes #193