Start querying the high confidence allow list for Safe Browsing.

Here's how it works:
1. Client calls V4LDbM::CheckUrlForHighConfidenceAllowlist()
2. If the hash prefixes aren't ready or Safe Browsing is disabled, it
   returns NO_MATCH i.e. can't determine if the URL is safe.
3. If no match is found in the local database, it returns NO_MATCH to
   indicate the URL isn't on the allowlist.
4. If the full hash of the URL matches a full hash in the local
   database, MATCH is returned to indicate no further lookup is required.
5. If a hash prefix match is found, it initiates a full hash lookup
   and returns ASYNC to indicate that the client will be notified later.

If the returned value is ASYNC, a full hash request is sent to the
backend to check if the URL's full hash matches a full hash of a URL on
the high confidence allowlist. Once the response is received, the client's
|OnCheckUrlForHighConfidenceAllowlist| method is called with the final
result, whenever it is available (or a timeout happens).

This entire feature is behind a different Finch flag:
SafeBrowsingRealTimeUrlLookupEnabled

R=drubery

Bug: 963165, 966646
Change-Id: Ifdc24d3f0b2e68013da5080febbe2aaf94edded4
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1661288
Commit-Queue: Varun Khaneja <vakh@chromium.org>
Reviewed-by: Nathan Parker <nparker@chromium.org>
Cr-Commit-Position: refs/heads/master@{#671469}
13 files changed