Make content::LoginDelegate single-thread and uniquely-owned

This is a reland of https://chromium-review.googlesource.com/c/1388164
with a fix + hardening for a callback reentrancy bug. Diff patchset 1
to patchset 3 for the changes. Patchset 3 to 5 are rebase/commit message
changes.

This pushes the IO/UI hop to inside //content, which simplifies the
callers. (Every caller is actually a UI thread object with an ad hoc IO
thread proxy.) LoginDelegate itself is now uniquely-owned and the proxy
is moved to inside ResourceDispatcherHost on the ResourceLoader path. On
the network service path, we don't need a thread hop at all, so this
simplifies things and saves a UI/IO round-trip.

Bug: 908926
Change-Id: I2a38890f95b967f8739423d520e95a264289d267
Reviewed-on: https://chromium-review.googlesource.com/c/1457001
Reviewed-by: John Abd-El-Malek <jam@chromium.org>
Reviewed-by: Carlos IL <carlosil@chromium.org>
Commit-Queue: David Benjamin <davidben@chromium.org>
Cr-Commit-Position: refs/heads/master@{#636092}
29 files changed