Tile garbage clean-ups

Currently tile sources and tile layer renderers generate a lot of garbage `ol.TileCoord`, `ol.TileRange` and `ol.Extent` objects. This causes regular GC pauses, which leads to jank.

This PR significantly reduces the rate of garbage generation, leading to fewer GC pauses and consequently a smoother experience.