- make Plane.peek() private and rename poke_span()
- allow notification for signal connections and disconnections
- before processing delete event, synthesize focus out (for the window in question) 
  if it has a focus item
- synthesize focus-out before popping up new (modal, override-redirect) windows  
- MAKE COMBINE_NORMAL --> over a real alias
- render(): pass on a RenderBuffer from which planes can be created via intersection
- Table: change shrink logic to shrink according to:
  1) shrink hshrink(1)/vshrink(1) children
  2) shrink expand children
  3) shrink *middle* children before edge (start/end packed) children
     (this preserves menubars or close buttons)
EVENTS:
- add_grab/remove_grab should queue a synthesized motion event so enter/leave states are
  updated. (test with overlapping buttons)
- button-press/-release: need to queue extra motion event so enter/leave states are updated
RENDERING:
- digital image compositing modes: http://keithp.com/~keithp/porterduff/
- curve_to approximation:
  http://graphics.idav.ucdavis.edu/education/CAGDNotes/Divide-and-Conquer-Bezier-Curve/Divide-and-Conquer-Bezier-Curve.html
  http://www.cs.mtu.edu/~shene/COURSES/cs3621/NOTES/
- geometry primitives: http://astronomy.swin.edu.au/~pbourke/geometry/
- hershey vector fonts: http://astronomy.swin.edu.au/~pbourke/other/hershey/
