Merge pull request #46 from marcjansen/master

Replace tabs with spaces.
Use protocol-relative URL for Bing metadata.

The [URI standard](http://tools.ietf.org/html/rfc3986#section-4.2)
allows for URI without a scheme.  Where http is used to load the app,
using a schemeless URL for the Bing metadata loads a script using http
- and the same goes for https.
Merge pull request #47 from fredj/protocol-relative

Use protocol-relative URL for Bing metadata.
Enable debugging in full screen example
Cope with layers being undefined
More detailed texture upload logging
Refactor exports and externs
Replace tabs with spaces
Merge pull request #41 from twpayne/exports-externs

Refactor exports and externs
Removing unused code
Remove tiles outside rendered extent

To avoid having misplaced at alternate resolutions while zooming, all tiles
outside the rendered extent need to be removed from the dom (closes #53).
Simpler and more thorough tile pruning

The render method always generates a map of all tiles that should be drawn
(called tilesToDrawByZ).  This includes tiles at alternate resolutions, tiles
still loading, and tiles previously rendered.  At the end of the render
sequence we can simply remove all previously rendered tiles that aren't in
tilesToDrawByZ.  This provides an alternate solution to the problem described
in #53 and more.
Abstract out key conditions for interactions, fixes #51, see also #54
Remove alt-z tiles when all tiles load at target z

The changes in a14a15159fb93e6ad75df3abd9ad6748c67d50e1 made it so tiles
at alternate resolutions were not pruned when target tiles finished loading.
Two lessons learned

Telling the compiler that object keys are numeric causes more harm
than good (see === comparison that could never be met though the
compiler didn't catch it).

Never use goog functions without reading the source first.  The
goog.array.sort method does nothing special sorting numeric strings
(so the zs array might be ['1', '10', '2'] here).
Fix sort problem identified by @tschaub in f8462460bf82f46484149d52822d62a6ab660cfc
Use goog.array.map for browser compatability, thanks @AugustusKling
disposeInternal implementation for ol.Map
disposeInternal implementation for ol.control.Control
goog.array.forEach does not accept null values