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 
That is an issue, but I'm not sure how to solve it without doing awful things (i.e. a thread-local global for tracking recursion depths...). IMO not crashing is more important than supporting user-overridable descriptions, but both are kinda shitty. Making the recursive description method public is one option, but not a great one.