DownloadPictureTask now returns DownloadResult instead. TODO call UploadTask with the result if it didnt fail.
Made an abstract class to ease code reading.