public void RegisterPhotoSource (ICacheablePhotoSource source)
{
if (source.CacheId != 0) {
throw new Exception ("Can't register an already registered source!");
}
var cache = new SqliteCachedPhotoSource (source);
cache.AvailabilityChanged += OnCachedSourceAvailabilityChanged;
source_provider.Save (cache);
source.CacheId = cache.CacheId;
source.Persist ();
cache.Start (this);
}