reland: chromeos: makes ScreenProviderObserver an associated interface

This is a reland of https://chromium-review.googlesource.com/c/chromium/src/+/1138866 .
Diff between patchsets 2 and 3 to see the diff.

And changes ws2 to ensure client is notified when scale-factor changes.
The conversion from ScreenProviderObserver to associated interface is to
ensure the ScreenProviderObserver is notified *before* the bounds change
because of scale-factor. To do otherwise means the client might use the wrong
scale-factor.

BUG=862409
TEST=none
TBR=tsepez@chromium.org, sadrul@chromium.org

Change-Id: I4a82d78cf880935d0c740ae3b98bd01c7eb61227
Reviewed-on: https://chromium-review.googlesource.com/1142185
Reviewed-by: Scott Violet <sky@chromium.org>
Commit-Queue: Scott Violet <sky@chromium.org>
Cr-Commit-Position: refs/heads/master@{#576222}
33 files changed