Introduce wtz-foreign protocol
wtz-foreign is a protocol meant to enable sharing wayland resources
between wayland clients. The only resource that clients are now able to
share with this protocol is a foreign shell. And the protocol may be
able to be extended in the future for sharing various resources.
The use case for foreign shell is out-of-process video playing surface.
For that, it provides a way to export and import a foreign shell.
Video playing application may export foreign shell with passing its
sub-surface, creating a handle for the foreign shell.
The handle, in form of a unique string, may be shared in some way with
other clients (for example, D-Bus) which can then import the foreign
shell with passing its surface. This gives the surface the role of a
foreign shell surface.
In this way, each client has a object. Which are named
wtz_exported_shell and wtz_foreign_shell.
The exporter may manipulate destination, transform, and position with
wl_subsurface and wtz_exported_shell interface.
The importer may attach and commit buffer with wl_surface without
care of its destination, transform, and position.
So final view by compositor will be determined by this combination.
Besides, the exporter may change the state of foreign shell along with
the changes of parent surface in an atomic manner using sub-surface
given when creating exported foreign shell.
Change-Id: I51ed03bcbe7740763895f09802ea249c061cef12