Cookie Store: Extract change notifications to separate classes.

Currently, CookieStore implementations are responsible for storing
cookies and dispatching notifications when the cookies they store
change. The dispatch logic is non-trivial, and will grow to support the
Async Cookies API (see the associated bug), so it deserves its own
class.

This CL splits off the change notification dispatch as follows:

* CookieStore -> CookieChangeDispatcher
* CookieMonster -> CookieMonsterChangeDispatcher
* AwCookieStoreWrapper -> AwCookieStoreChangeDispatcherWrapper
* CookieStoreIOS -> CookieChangeDispatcherIOS

Due to complexities and upcoming refactoring in the iOS CookieStore
implementations, the existing implementation is not split up. Instead,
CookieChangeDispatcherIOS is a proxy that directs AddCallback*() calls
to CookieStoreIOS. The other CookieStore implementations (CookieMonster,
AwCookieStoreWrapper) have the change notification dispatch code moved
into the ChangeDispatcher classes.

This CL also changes the listener registration APIs to pass
base::Callbacks by value instead of passing them by reference, per
https://chromium.googlesource.com/chromium/src/+/master/docs/callback.md

This CL is large, but only does renames / code moving / minor cleanups.
It opens up the way for a small (but dense) CL that will revamp the
notification dispatch logic.

Bug: 729800
Cq-Include-Trybots: master.tryserver.chromium.linux:linux_mojo;master.tryserver.chromium.mac:ios-simulator-cronet;master.tryserver.chromium.mac:ios-simulator-full-configs
Change-Id: Ie56b036419a85f7802c6b1d4bb2c935b58232374
Reviewed-on: https://chromium-review.googlesource.com/919159
Commit-Queue: Victor Costan <pwnall@chromium.org>
Reviewed-by: Randy Smith <rdsmith@chromium.org>
Reviewed-by: Richard Coles <torne@chromium.org>
Reviewed-by: Mohammad Refaat <mrefaat@chromium.org>
Reviewed-by: John Abd-El-Malek <jam@chromium.org>
Reviewed-by: David Roger <droger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#540099}
53 files changed