Don't crash when eglCreateContext fails

eglCreateContext fails with every EGLConfig that
nvidia blob 334.16 provides causing NULL pointer
dereference in gl_renderer_destroy when destroying
fragment and fan bindings.

https://bugs.freedesktop.org/show_bug.cgi?id=74699

Signed-off-by: Mariusz Ceier <mceier+wayland@gmail.com>
xdg-shell: Move "ping" and "pong" to xdg_shell, not xdg_surface

Responsivenes is a per-client thing so we move the ping/pong functionality
to xdg_shell.  Having this per-window was carries over from the EWMH
protocol, where the WM has no other way to do this.  In wayland, the
compositor can directly ping the client that owns the surface.
client: Fix shell unstable version check

Use a static assert to catch mismatch between implementation and
interface version.  Fix window.c to not use XDG_SHELL_VERSION_CURRENT,
which will fail to catch version mismatches.  The implementation version
must updated manually when the implementation is updated to use the new
interface.
build: Link to libshared.la instead of adding to SOURCES

libshared.la is just os-compat, the option and config parser, so let's
link to that instead of adding the os-compat files to all these targets.
build: List xdg protocol files as nodist SOURCEs
compositor: Drop core ping_handler callout

This was always a little iffy.  At least it could have been a signal,
but we now have focus signal, so lets just use that.  We lose
the ability to detect unresponsive clients at key event time, but we
could add that back by adding a key_signal.
shell: Use the per-client responsiveness tracking for wl_shell as well
shell: Reorder the xdg_shell implementations to fit the spec'd order
clients: Add delete handler for simple-shm / simple-egl

It seems this was forgotten in the port. Just add two empty
handlers for now...
xdg-shell: Remove "edges" from description

The parameter was dropped...
xdg-shell: Rename focused_set / focused_unset to activated / deactivated

To try and make the distinction between this event and keyboard focus.
xdg-shell: Replace the set_* atrocity with a new approach

Rather than require that the client implement two methods for every state,
simply have one global request, change_state, and one global event,
request_change_state.