Change to use server-created devices
This changes the protocol so that it is the EIS implementation that creates devices within a seat.
A client now "binds" to a seat and the EIS implementation creates devices matching the requested capabilities. A client can close a device if it no longer wants those but otherwise everything (including pointer ranges) is handled by the server.
This is one giant patch because changes at the protocol level cannot easily be broken out into smaller patches. Some FIXMEs are left which will be handled in follow-up patches, e.g. the keymap handling is basically broken right now.
Fixes #7 (closed)