Share common code to find loaded tiles

All renderers have a copy of the `findInterimTiles` function.  This can be shared on the tile source, and is better named `findLoadedTiles`.

The function is supposed to iterate through all coords in a range, add already loaded tiles to a lookup, and return whether the requested range is covered with loaded tiles.

Previously, the function was returning `undefined` if the min x/y tile in the range was already included in the lookup.  6aa4e99fe536e50c4c2f3ed47cf930f4233bc3dd addresses this.

The previous function treats the provided tile range as having inclusive max x/y values.  The `getTileRangeForExtentAndZ` method is not consistent in terms of returning inclusive or exclusive ranges.