reland: adds ability to track when keyevent processed asynchronously

This adds the ability to register a callback on a KeyEvent that is called
when async processing completes. This is important for content as key events
may be handed to the renderer, which means the event is asynchronously
processed.

BUG=891489
TEST=none
TBR=sadrul@chromium.org

Change-Id: I1dc0ae3768c61eac7bd5edadf0be8562dae8b1d3
Reviewed-on: https://chromium-review.googlesource.com/c/1290069
Reviewed-by: Scott Violet <sky@chromium.org>
Commit-Queue: Scott Violet <sky@chromium.org>
Cr-Commit-Position: refs/heads/master@{#601175}
10 files changed