Clean up dynamic geometry updaters

The dynamic geometry updaters in the DataSource layer did not have the same semantics as the rest of the visualizations system.  Mainly, an undefined value would cause Cesium to crash instead of simply not rendering an object.  This change uses the Property.getValue helper functions in order to both clean up the code and follow the same rules.

This change looks bigger than it is; it's really just a lot of cleanup.  I did add a private function, `PrimitiveCollection.removeAndDestroy`, because otherwise I needed to have special logic everywhere I destroy a primitive I myself created depending on whether the user set `PrimitiveCollection.destroyPrimitives` or not.

Fixes #2252
Also seen on the [forum](https://groups.google.com/d/msg/cesium-dev/tV8MJYdAcEI/lhGvbn9ikc8J)