Use forward declarations
Refactor launcher

* Move tty handling to launcher.
* Handle DRM master and evdev revoking in launcher.
* Make launcher a standalone program that can start arbitrary servers.
* Handle VT switching in launcher.
drm: Fix use of uninitialized variable on error
evdev: Use new libevdev API
compositor: Remove unused variable
Don't need wayland-client
Rename swc_container_of -> CONTAINER_OF

It is a macro so follow the convention of all caps.
fixup container_of
util: Add missing include for stdlib.h

Required for NULL
xkb: Make keymap_file_template static
Add beginnings of public API
Move binding handling to binding.c and add to public API
Style
output: Support protocol version 2
Use protocol/ for including protocol headers
Update .gitignore