Reland mash: Move SpokenFeedbackEventRewriter to ash; add mojo delegate

The original crrev.com/c/1038819 broke volume keys: crbug.com/839683
PS2 fixes that by reposting events to other rewriters and adds a test.

ORIGINAL CHANGE DESCRIPTION FOLLOWS:

Move the rewriter files to ash, keep the delegate impl in chrome.
Add a mojo interface for the delegate to receive and return events.
Ash's controller creates the rewriter, Chrome sets the delegate.

Move, expand, and refine the existing unit tests.

Add TODOs to refine the rewriter/delegate/ChromeVox pattern.
(the rewriter shouldn't pass events that will need to be reposted)

This should allow Mash to support this rewriter in the future.
(for now, Ash doesn't get Window Service events sent to Chrome)

TBR=jamescook@chromium.org

Bug: 647781
Test: No regressions with ChromeVox spoken feedback on Chrome OS.
Change-Id: Id2e778fa3a82aee7f568244a5c2596ab86919a1d
Reviewed-on: https://chromium-review.googlesource.com/1044780
Commit-Queue: Michael Wasserman <msw@chromium.org>
Reviewed-by: Michael Wasserman <msw@chromium.org>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: Scott Violet <sky@chromium.org>
Reviewed-by: David Tseng <dtseng@chromium.org>
Cr-Commit-Position: refs/heads/master@{#556458}
21 files changed