[Mfill Android] Make accessory state webcontents-scoped

Showing the keyboard everywhere (with https://crrev.com/c/1503574) has
uncovered inconsistent showing of passwords.

This CL tries to mitigate that by moving all state into a separate data
store and ensuring, cached data is available whenever the shown
WebContents change.

Prevents: (rare issues or issues in follow-up CL)
 * Duplicate key icons
 * Redundant null checks for unitialized/destroyed states. Both are
   now an empty state - no inconsistent states should be possible.
 * missing suggestions when tabs change

Minor fix:
 * circumvent destructor NullPtrException by using
   NonNull.equals(Nullable) instead of Nullable.equals(NonNull)

Bug: 932124
Change-Id: Ia73ea2ca2fdb57c077c45279d1e64577f3a84fa4
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1517672
Commit-Queue: Friedrich [CET] <fhorschig@chromium.org>
Reviewed-by: Ioana Pandele <ioanap@chromium.org>
Cr-Commit-Position: refs/heads/master@{#641535}
10 files changed