protocol: Add state manipulation methods to wl_shell_surface.

The "ask_set_state" and "ask_clear_state" events are used by the
compositor to request that the client set/unset the referenced state.

The "set_state" and "clear_state" requests are used by the client to
inform the compositor that the shell surface is being set/unset to
referenced state.

Currently, 4 states are being added: maximized, minimized, sticky, and
always_on_top.

Setting the "maximized" state should have the same effect as changing
the surface type to maximized.