Improve DataSource geometry instance attribute performance

Geometry instance attributes are much more expensive to set than I realized when I implemented DataSource geometry batching.  This modifies the batching code to cache the last attribute value and only set it if it's changed.  This improves performance by doing less work, but also greatly reducing the amount of garbage generated in scenarios with lots of geometry that changes color or visibility over time.
Merge pull request #1624 from AnalyticalGraphicsInc/dirty-work

Improve DataSource geometry instance attribute performance