Don't create tile if rendering needs to be deferred

Rendering vector tiles with mixed geometry types does not work
as expected, because the tile is created without the geometries
that need another rendering pass because of missing icons. This
was discovered by @bartvde when working on the KML parser, where
mixed geometry types are common.

This change fixes the issue by breaking out from rendering
entirely when renderFeaturesByGeometryType returns a deferred
state. In addition, there was a related bug because icons are
added to the cache regardless of its loaded state. This is also
fixed now.
Add infrastructure for glsl-unit
Use glsl-unit in WebGL map renderer
Use glsl-unit in WebGL tile layer renderer
Configure Travis to build shaders with glsl-unit
Move shader support code into ol.webgl
Reuse ol.TileRange object in forEachTileCoordParentTileRange
Avoid creating extra ol.Size object in getPixelBoundsForTileCoordAndResolution
Avoid creating ol.Coordinate objects to call getTileCoordForCoordAndResolution_
Make reverseIntersection argument mandatory
Replace getTile with getTileZXY

This massively reduces the number of temporary ol.TileCoord objects.

Previously an ol.TileCoord object was generated for every potentially
visible tile at the current zoom level and lower, every frame.  This
commit eliminates all of those.  Now new ol.TileCoord objects are only
allocated when a new tile is created.
Tidy up ol.webgl namespace
Make time-sensitive test less sensitive
Fix use of this in ol.source.BingMaps
Merge pull request #430 from twpayne/fix-bing-maps-scope

Fix use of this in ol.source.BingMaps
Rename AnchoredElement to Overlay
Add comment about automatically generated files
Merge pull request #420 from ahocevar/icon-defer

Don't create tile if rendering needs to be deferred. r=@bartvde
Rename getTileZXY to getTile
Rename TileJSONOptions.uri to TileJSONOptions.url