getTileDataAvailable() handling for terrain providers

This is a tile loading optimisation for cameras that start near the globe based on advice from Kevin.  It is currently only implemented for the Cesium terrain provider which knows in advance which tiles are present.
Currently there are no "base classes" or inheritance in Cesium.  `TerrainProvider` only exists as documentation of an implicit interface, so there are no breaking changes here.