Handle object cycles in -description.

Track which RLMObjects/RLMArrays we've seen in mutable set and just return "<cycle>" as the description if we hit one already seen.

@alazier 
Actually, it's not an issue because the user code will never get called in the case it is nested. Instead the ```descriptionWithObjectsSeen:``` method will get called as the user doesn't even know this exists.

As is, we are preventing users from using custom descriptions without overriding ```description``` for every object and for ```RLMArray```