Add extrapolation options to sampled properties.

1. Add `ExtrapolationType` enumeration.
2. Add `forwardExtrapolationType`, `forwardExtrapolationDuration`, `backwardExtrapolationType`, and `backwardExtrapolationDuration` properties to `SampeldProperty` and `SampledPositionProperty` to control how the property behaves outside the bounds of its sample data.
Add CZML tests for extrapolation options.
Start refactoring visualizers to handle undefined property values

Previously, when a property was undefined, the visualizer would just leave the existing value.  We now revert to the default value.  This also simplifies the code by introducing a helper function.
Add Property.getValueOrDefault and use it where appropriate.
Change sampled properties to not extrapolate by default.
ModelVisualizer cleanup and improved default value handling.
Overhaul defaults for material properties.
Ongoing default cleanup

DataSource Materials now all default to solid white.
Minor path visualizer cleanup.
Update CHANGES
Changes after review.

Better short circuting of branch logic in visualizers when an entity is not being displayed.
Clean up sensor API

This are changes needed ahead of #1887 to ensure API/CZML compatibility with 1.0
Undo unintentional variable rename.
Changes after review.

1. Make branch logic in PointVisualizer easier to follow.
2. Break out all DataSource defaults to module-scoped variables.
3. Minor tweak to CZML extrapolation processing.