use QSharedPointer to manage FileDownloadTask
use QTimer::singleShot(0) to avoid task object destructed before slots are triggered
use custom deleter for QSharedPointer to avoid the object deleted immediately

Instead of the QTimer::singleShot(0) hack
Merge pull request #385 from haiwen/sharedptr

use QSharedPointer to manage FileDownloadTask