chromeos: moves PerformWmAction to a more specific function

PerformWmAction was provided as a way to have the window manager perform an
action not known to the window service. The window-service defined this api
so that a window's id could be passed, which is unique to the client. A
more generic approach is to allow the environment hosting the window service
to supply arbitrary associated interfaces that are not known to the window
service. It's important the interface is associated so that we can know the
ordering. That's what this patch does.

This adds WindowTree::BindWindowManagerInterface() that takes a name and handle.
The name is the name of the interface (every mojom interface has a name).
The function is typed to associated WindowManager& window_manager, but that is
just a necessity of the mojom. It's used to request *any* interface. In fact
requesting ws::mojom::WindowManager won't work at all. An interface needs to
be named here as there is no way in a mojom to say *any* associated interface.

This also converts the one use of PerformWmAction to an interface defined by
ash, AshWindowManager.

BUG=883947
TEST=covered by tests

Change-Id: I21870a1d173352b596716cd1a807b591385f8a2b
Reviewed-on: https://chromium-review.googlesource.com/1225693
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Jun Mukai <mukai@chromium.org>
Commit-Queue: Scott Violet <sky@chromium.org>
Cr-Commit-Position: refs/heads/master@{#591439}
34 files changed