Pulled-up AutocompleteHistoryManager to be a KeyedService.

Autocomplete suggestions are scoped under a Profile, but the
AutocompleteHistoryManager was living under a Frame context. Pulling it up to
live at the BrowserContext level makes it represent the reality better. It will
also allow us to run "one-time" initialization, such as logging metrics for
local data once on start-up.

To keep in mind:
- Since we don't want to load all autocomplete entries into memory,
  autocomplete suggestions are always fetched asynchronously.

Before:
- AutocompleteHistoryManager lived in AutofillManager,
- AutofillManager gave an instance of ExternalDelegate to
  AutocompleteHistoryManager,
- Whenever AutocompleteHistoryManager asynchronously received suggestions, it
  forwarded them to the given ExternalDelegate.
- All three instances are within the context of a Frame.

After:
- AutocompleteHistoryManager lives as a KeyedService, and is passed as a ctor
  parameter to AutofillManager.
- AutofillManager implements the AutocompleteHistoryManager::SuggestionsHandler
  interface.
- Whenever an AutofillManager instance wants to fetch autocomplete suggestions,
  it passes itself as an observer of the query.
- AutocompleteHistoryManager keeps a map of DB query IDs (unique) to observers,
  and updates them upon receiving the suggestions.
- When AutofillManager is invoked after receiving the suggestions, it forwards
  them to its ExternalDelegate instance, allowing per Frame rendering.

Bug: 915223
Bug: 907902
Change-Id: I9e3d257269e4918a6ce29bcbbb2ec961afccaab1
Reviewed-on: https://chromium-review.googlesource.com/c/1351434
Commit-Queue: Sebastien Lalancette <seblalancette@chromium.org>
Reviewed-by: Tao Bai <michaelbai@chromium.org>
Reviewed-by: Olivier Robin <olivierrobin@chromium.org>
Reviewed-by: Moe Ahmadi <mahmadi@chromium.org>
Reviewed-by: Fabio Tirelo <ftirelo@chromium.org>
Reviewed-by: Sebastien Seguin-Gagnon <sebsg@chromium.org>
Reviewed-by: Vadym Doroshenko <dvadym@chromium.org>
Cr-Commit-Position: refs/heads/master@{#617267}
40 files changed