[ozone/wayland] Add support for menu window type

It's now possible to create menu/popup windows in ozone/wayland.

What is more, Ozone/Wayland now implements xdg popup objects, which are
used for such windows as menus. Basically, popup windows are the only
windows, which clients are able to set to whatever place they want on
top of a parent window (global coordinates are not available).

The FakeServer has also been extended to support xdg popup and positioner
objects. What is more, ownership model for the new added objects is a bit
different. Instead of keeping them owned by surfaces, they are making use
of helper template methods with wl_resource_set_implementation, which
automatically take and release unique_ptrs.

In the future, all the other mock objects must be turned to that model for
simplicity.

TEST=XdgVersionV5Test or XdgVersionV6Test
WaylandWindowTest.CreateAndDestroyMenuWindow/0,
WaylandWindowTest.CreateAndDestroyNestedMenuWindow/0,
WaylandWindowTest.CanDispatchEventToMenuWindowNested/0,
WaylandWindowTest.CanDispatchEventToMenuWindowNonNested/0 (1 ms)

Bug: 578890
Change-Id: Ia644862cce34375d3a758d8c0ff398c75dd47772
Reviewed-on: https://chromium-review.googlesource.com/1075309
Commit-Queue: Maksim Sisov <msisov@igalia.com>
Reviewed-by: Robert Kroeger <rjkroege@chromium.org>
Cr-Commit-Position: refs/heads/master@{#567608}
24 files changed