Fixes crash in RMBingSource when the user is offline
Moved background caching from RMTileCache to RMDatabaseCache and associated changes.

Discussion of background caching changes:
The move of background caching to RMDatabaseCache was pretty straightforward. However, a few changes were needed that require some further explanation.
First of all, since we are no longer performing this as part of RMTileCache, and as such, an RMTileCache will not be available to look for pre-existing cached images. As a result, in RMDatabaseCacheDownloadOperation, images are requested from the tile source by:
UIImage *image = [_source imageForTile:_tile inCache:nil];
Passing nil to the inCache parameter has two effects:
1. We will not use an RMTileCache to look for images first, they are always downloaded fresh. This could waste some bandwidth. But I think the cleaner design is worth the tradeoff.
2. Passing nil to this parameter results in nil being messaged (when the tile source attempts to retrieve the images from the cache). This isn't a problem in itself, but we should make sure that tile sources can handle this.

Before these changes in this commit, I noticed that background caching was frequently causing the kWriteQueueLimit to be exceeded, meaning the tile image would get downloaded, but not written to the database. This was often quite severe, sometimes resulting in more than 80% of images to be discarded. Because background download operation processes already live on their own NSOperationQueue, there is no need to again perform the tile saving on a separate queue. So I added another method:
- (void)addImageAndWait:(UIImage *)image forTile:(RMTile)tile withCacheKey:(NSString *)aCacheKey
This is used by the download operations to save the image to the cache, fixing the problem of skipped tiles.

A boolean property, tileExisted, was added to RMDatabaseCacheDownloadOperation to indicate whether the tile was already in the cache. This is used to better support resuming of download operations, the delegate will only be notified of new tiles which have been downloaded. It is also using the new containsTile:withCacheKey: method which should provide lower overhead than cachedImage:withCacheKey:.

Additional changes:

- Added withIdentifier:(id)identifier parameter to various background caching methods, an arbitrary object which will be provided back to the delegate to identify the download operation.
- Added readOnly, imageType and jpegQuality properties to RMDatabaseCache.