Get WeakPtrs using a WeakPtrFactory and pure virtual methods

This avoids lifetime issues with SupportsWeakPointer, which is unsafe with
respect to the order in which collectors are destroyed and when weak pointers
are invalidated.

BUG=b:134761848

Change-Id: I4a09dabd81079811b456acb7aca8c653c804edc2
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1666802
Commit-Queue: Gabriel Marin <gmx@chromium.org>
Reviewed-by: Gabriel Marin <gmx@chromium.org>
Reviewed-by: Mike Wittman <wittman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#670622}
8 files changed