Instead of overloading the device id of 0 and 1 we should treat the core devices as special, and have a pointer inside the X11 backend singleton structure, for fast access.
ClutterInputDevice should be a type that we can subclass per-backend to add functionality.