- Consider renaming WsRegion   -> WsServerRegion
- Make API consistent with notes in "xid memory management"
	Eg., rename ws_window_ensure() ->   ws_window_new_foreign()
- get rid of window_new_gl() and make it ws_window_setup_for_gl() instead.
  or perhaps have a new class called GlWindow. The latter would make
  swap_buffers more natural.
- Extensions should probably not be explicitly initialized, instead there should be
  ws_has_<blah>, and the various <blah> requests should indicate whether they failed
  or not.
- Think through how we deal with stuff that goes away. A problem is that some
  of the Ws objects do requests in response to events, which means they might
  do on a destroyed object.

	- always punt event to higher level
	- always trap errors when we do stuff 'spontaneously'
		(this is basically free since error handling is async).

  What about _ensure_window()/lookup_window()? 

	- If you call them, then you better know that the window is not destroyed
	  or you have to trap errors around the call.
		(if you do trap errors, then you'll get a broken object back).
	- You can call them, but if the window is destroyed, you'll get an
	  object back that will randomly fail. 
	- You can call them, but if the window is destroyed, you'll get NULL
	  back.
	- You can call them, but if the window is destroyed, you'll get an
	  object where some methods will generate errors.

  In general, suppose we have a WsWindow, and someone destroys it. Then ops on that
  window will generate errors, there is no way we can avoid that. We have to punt
  that to the user. 

	- screen as a mandatory property on drawables is broken. When a 
	  window is created it may already have been destroyed, in which case
	  there's is no way to know what it's screen were. 

	- basically the same goes for format, which we can't dispense with
	  so easily.

- Figure out what drawable-node is anyway

	- Does it handle configures by itself? 
		- No, because then we can't do fancy resizing effects
	- Does it handle map/unmap?
		- what if it is created with an unmapped window?
		- what if it is created with a mapped window that then
			disappears?
		- 

- gobjectify
- All drawable should have associated visuals/formats.
- Think the ws->screens/ws_screen_get() mess thougyh. Probably just make it
  explicitly the case that screens are gotten from ws'es.
