- code style improvements
- created TileDownloader abstract class
- moved TileRequest.load method to be part of tile downloader code
- fetch function code moved to tile downloader class
- this is done to allow overriding caching strategy in the future
- code cleanup
- TileRequest class code cleanup
- documentation updates