DynamicScene ES5 properties

This change updates all of the DynamicScene graphics objects (`DynamicBillboard` et al.) to use ES5 properties.  It adds the ability to observe each of these objects via the `propertyChanged` event.  `CompositeDynamicObjectCollection` has been rewritten to actually work in all cases and uses the new features to make that happen.  `DynamicObjectCollection` has also had some API changes to improve usability.  Both collections now offer additional notification information for when objects change.  I'm not 100% happy with the `CompositeDynamicObjectCollection` API, so I'm open for suggestions for additional tweaks.

This change also adds the ability to easily specify custom properties on `DynamicObject` via the `addProperty` method.  This allows for any data source to add custom properties which will then play nice with the compositing and notifications system.  This is a precursor to automagically handling custom properties in CZML in a future pull request.

Since ES5 properties are slow, the visualizers currently index into the "private" variables that back the properties.  Future pull requests will re-write each of the visualizers in order to take advantage of the new functionality and improve overall performance.