Cleanup CompositeDynamicObjectCollection

These are all internal changes.

1. DynamicObject.definitionChanged previously only fired on property assignment; now that it fires whenever a property is changed we could remove a bunch of extra bookeeping code.
2. We no longer a new closed-over function for each event subscription, so I moved the function created by createPropertyChangedCallback onto the prototype.
3. Fix a bad length assignment in removeAllCollections.
4. Compositing should now be faster and take up less memory.