* Add a generic LRUCache implementation
* Add a SmartFSProvider which is a file storage backed tile provider and falls back to loading a tile from the network if nothing is found on disk.
* Added a TileDownloaderDelegate as a self contained tile downloader which also saves Etag header data.
Added proper flush and close calls to the outputstreams to prevent resource leakage when writing ETag and tile PNG files
* Added BetterTileProvider which provides access to the SmartFSProvider
* More logging
* Minor interface additions so that the SmartFSProvider and TileDownloaderDelegate can operate properly.

The interface modifications are needed as a first step towards refactoring the code into something cleaner.