Fix tile change event handling

This PR fixes two problems:

* Currently tile change listeners registered by tile layer renderers are not removed when tiles are dropped from the tile queue. 2aabf31 fixes by adding an `inQueue` count to tile objects and removing all listeners when a tile is dropped and `inQueue` drops to 0.
* Currently we may register multiple change listeners on the same tile. This is not a major problem, but the `handleTileChange` function will be executed multiple times when the tile is loaded. 8c0bedc fixes it by keeping track of the tiles we already have a listener for.