Asynchonously remove a download item to avoid reentrance issue

When native found an externally deleted download, it calls into DownloadItem::OnDownloadUpdated().
This will trigger the DownloadHistoryItemWrapper to call removeDownload().
Which in turn calls into DownloadItem::OnDownloadUpdated() again.
This CL makes removeDownload() an asynchronous operation.
So we don't have the reentrance issue.

BUG=778255

Change-Id: I84a71c3fbc2d8757da5e9c16bc0a6b24f94f8e44
Reviewed-on: https://chromium-review.googlesource.com/783173
Commit-Queue: Min Qin <qinmin@chromium.org>
Reviewed-by: Xing Liu <xingliu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#518505}
2 files changed