Start refactoring CompositeDynamicObjectCollection

This also involves refactoring DynamicObject to generate proeprty notifications.