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.

@emackey and @shunter you might both find this pretty useful.