Validate object graphs for cycles in composites on first commit

Also fix a bug that was breaking validation of COObject instances in relationships when there's no user-supplied subclass.
I factored this part out into a -[COObject entityDescriptionForObject:] method for now to make the code easier to read. Agree it could be moved to ETModelDescriptionRepository, I added a TODO for that