Fix the multi-threaded access to WeakPtr<BrowsingDataRemoverImpl>

Previously, we depended on a WeakPtr to access BrowsingDataRemoverImpl
to gain access to its delegate on which we called the embedder origin
type matching method.

With this CL, the delegate provides a callback to a static method,
eliminating the need for any pointers.

To prevent a similar bug from happening in the future, we proactively
bind the WeakPtr<BrowsingDataRemoverImpl> to the UI thread, so it
would immediately DCHECK if it was misused on the IO thread.

BUG=705538,668114

Review-Url: https://codereview.chromium.org/2781083002
Cr-Commit-Position: refs/heads/master@{#462530}
7 files changed