Merged in changes from github.com/crankycoder/osmdroid at revision: 16dd5f3a18c4014f8ab1246337ce632c33e38946

* Added a BetterTileProviderArray
* Repointed MapView to use
* 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.
* Cleaned up flush() and close() calls to the IO streams for etag and
  tile writing
* More logging. So much logging.
* Minor interface additions so that the SmartFSProvider and
* TileDownloaderDelegate can operate properly.
* Added a forced 2000ms timeout for sockets as well as HTTP
* connections
* Added  TileDownloaderDelegate::isTileCurrent() to check if the etag
* on a tile is current
* Added methods in TileWriter to support reading tags for a given tile
* Broke out the isTileCurrent() and downloadTile() methods into their
  own try/catch blocks so that HttpHostConnection errors can be caught
  as an IOException. This prevents the worker pool in the
  ExecutorService from receiving uncaught exceptions.