DiaCanavas - GNOME canvas interaction

DiaCanvas is basically an abstraction layer for GnomeCanvas. GnomeCanvas items
are the visualized counterpart of the DiaCanvas items, which hold the "real"
information. For that reason, the DiaCanvas item should emit signals to tell
it's GnomeCanvas items of any changes in it's state.

Signals used:
- need_update: a DiaCanvasItem needs updating (therefore the GnomeCanvas item
   needs updating, which can be handled by the GnomeCanvas.
- z_order: an object raises/lowers in the canvas herarchy.
- event: An event is emited. The GnomeCanvasItem is also passed to the event
   handler so the objects can behave in a different way if the object is
   grabbed or has the focus. This part might make DiaCanvas a bit more
   complicated, since knowledge of GnomeCanvas is required.
- move: An object needs to be mmoved. This results in all selected objects being
   moved.

DiaCanvasGroup has two additional signals:
- add: an object is added to the DiaCanvasItem
- remove: visa versa.


----------------------------------
Handling events in an abstract way
----------------------------------

In case of events, like movements and the like, it is important to update not
only the region where the new object is drawn, but also the region where the
object was placed before the move.


----------------------------------
Drawing the GnomeCanvas (DiaShape)
----------------------------------

To make it easy for objects to draw to several sources, the drawing information
is stored in a compact way. Lines are saved as vpath's and ellipses by
their center point and radius.

If the canvas is an anti-aliased canvas, the information is converted to
SVP structures. For GDK (X) rendering, the information is transformed to
X structures. 
