Clean up and centralize loading logic for data sources.
Add CallbackProperty for lazy evaluation

Sometimes you need to generate DataSource information on the fly, which
isn't possible without implementing a customer Property instance. This
new object makes it easy to create custom properties via a callback function.
For example, you could have a label that dynamically changes with the
height of an Entity or range to another POI.

The only place we use this outselves right now is in GeoJsonDataSource
to prevent building a bunch of string up front; which provides a large
performance boost during load.

I also fixed a minor comment typo I found in several places.
Update CHANGES.md
Merge remote-tracking branch 'origin/master' into callbackProperty

Conflicts:
	CHANGES.md
Fix initial geometry outline color.
Remove need to explicitely set depthTest for geometry outlines.

We already compute the correct value automatically in `Appearance.getDefaultRenderState`. This change updates `Appearance.getDefaultRenderState` to apply unset defaults to the specified user options and remove the explicit settings throughout the code.
Merge pull request #2284 from AnalyticalGraphicsInc/outline-cleanup

Remove need to explicitely set depthTest for geometry outlines.
Merge remote-tracking branch 'origin/master' into dataSource-setLoading
Merge pull request #2264 from AnalyticalGraphicsInc/dataSource-setLoading

Clean up and centralize loading logic for data sources.
Merge remote-tracking branch 'origin/master' into callbackProperty
Merge pull request #2281 from AnalyticalGraphicsInc/callbackProperty

Add CallbackProperty for lazy evaluation