Don't allow passing persisted objects to -[RLMRealm addObject:]

This didn't work correctly if the object was persisted in a different Realm (it just created an empty row rather than copying it), and `createInRealm:withObject` is a much better way to support copying objects between Realms as it doesn't involve a method doing something very different from what it normally does.

This also changes the semantics of `createInRealm:withObject:` a little: the passed object is now never mutated, while previously linked RLMObjects were added with `addObject:`, which would turn standalone RLMObjects into accessors.

@alazier 
If we pass in the target Realm to RLMValidatedDictionaryForObjectSchema and RLMValidatedArrayForObjectSchema and subsequently to RLMValidatedObjectForProperty, we can elect to only do a deep copy only in the case that the realms don't match.

My biggest complaint about the current implementation is having two flags get passed through all these apis is a bit confusing and messy. It took me quite a while for me to understand why we even need the second flag, whereas I think the concept of passing a target realm into the validation methods is a bit easier to understand.