Fix race condition caused by concurrent access to global cache

parent #437 
If CacheFile still exists after you perform deletion on the CacheFile, it means some other process just updated the CacheFile and opened it. If the CacheFile is already updated, we don't need to update it again with the same content. So we simply point the result to it.
The rationality behind this logic is that, because this case will only happen when you run multiple `kpm restore` simultaneously (i.e. they are accessing the latest package feeds at the same time), we can safely assume that all `kpm restore` are intending to update a specific global cache file with the same content. So if one `kpm restore` successfully updates a specific global cache file, all other `kpm restore` can safely use the updated cache file without updating it again.