Various fixes to CompositeDynamicObjectCollection.

Rather than expose a collection property, wrap it so that we can always know when something has changed.