Handle circular refrences

This seems to handle circular references of objects and arrays.
much better. As long as udc is performant, as changeset gets used in a lot of digest dirty checking checks.