Make separate keyboard and pointer device classes
Link associated devices
Don't set send_event, make public function private
Emit events
Flesh out keymap
Disable debugging message
Disable debugging message
Use event queue (sort of) correctly
Fix return windows in gdk_mir_pointer_query_state
Get menus working (sort of)
Implement gdk_mir_window_impl_get_device_state
Finalize MirWindowImpl values
Handle Mir events on the main thread
Correctly hide windows
Remove debugging
Let GDK decide if it wants events, ignore the event mask
Generate crossing events
Counter suspicious hover-exit events
mir: do proper event dispatching

We had a race where destroying a window while an event is being
dispatched to it could result in a crash.  We can't just hold a ref on
the window because the object is externally visible and we could end up
running a binding's toggle ref handler in the mir thread.

Add a proper source type with a queue and try to do this properly by
dispatching the event back to the main thread before we check if the
window still exists (through use of a weak ref).

This commit also moves all of the event translation code out of
gdkmirwindowimpl.c (which is getting a bit big...).
Set KeyEvent string field