Tile pyramid is no longer operating with `RenderTiles` and does not perform
rendering operations (upload, finish render).
Render tiles belong to rendering, and tile pyramid belongs to orchestration.
RenderTileSource is a base class for the render sources that provide render tiles.
* Removes repeated code
* Simplifies render source code refactoring and improves readability
RenderTile and Tile will be split when ochestration movces to a separate thread.
This PR improves encapsulation of Tiles management: now performed within TilePyramid.
- Symbol querying is now global instead of per-tile
- Symbols that bleed over tile boundaries no longer missed in queries
- Symbol results now sorted based on rendering order (ie overlapping symbols change their sort order when a bearing change causes their render order to change)
- Placement::retainedQueryData now responsible for maintaining symbol querying data for buckets that may no longer be in the TilePyramid.
Android still calls "reduceMemoryUse" only while handling a low memory event.
iOS, on the other hand, calls "reduceMemoryUse" every time it enters the background.