PyDia: support DiagramData.diagram (kind of dynamic cast)

The DiagramData object passed to plug-ins usually is-a Diagram, too.
The new read-only attribute can be used to access methods only
implemented by the latter.
Fix DiaRenderer::fill_bezier() call with just a single point

My recent renderer tests showed complaints about Beziergon creations
with just too few points. The root cause was identified by a new
DissectRenderer implemented with PyDia. Actually the bug was in
bezier_render_fill() - the emulation method for Bézier with holes.
[substitute] improve Convert to Path

'Convert to Path' based on the DiaPathRenderer was not producing the
desired effect for some standard objects. Filled objects were not
necessarily filled anymore after conversion. Even simple objects were
producing a group of objects rather than a single path object. Now:
 - start a new path when switching from fill to stroke color use
 - optimize for duplicated path coming from Dia's current split to fill
   and stroke in two steps (with the same path data)
 - be more tolerant regarding path extending so that rounded rectangles
   lead to a single path object
Also included a test/demo file convert-to-path.dia.
[transform] Recalculate layer extents in layer_replace_object_with_list()

Currently this function is only used when un-grouping objects. Formerly
this was an operation never changing the extents because a group had
the same bounding box as it's joined objects. Now with groups with
transformation the objects position and size might change. But even
without the transformation this extra call should cause no harm except
for some extra CPU cycles.
PyDia: allow to implement DiaRenderer::is_capabale_to() ...

... and use that for diasvg.py. The latter is necessary to avoid some
recently implemented fallbacks of the DiaRenderer base class, i.e.
render-alpha, render-affine and render-holes are all supported with
diasvg.py, but the core was applying some fallbacks.
Fix some typos and white space issues
Enable popup_object_menu() via GDK_Menu key
libart: fix DiaLibartRenderer::fill_bezier() to use ART_WIND_RULE_ODDEVEN

It worked with the default for some bezier (e.g. with render-test.dia),
but was producing lots of error with e.g. convert-to-path.dia.
DiaRenderer: replace fill_bezier with draw_beziergon ...

With the previous API it was not possible to stroke closed Bézier curves,
leading to artifacts where lines are joined. The new draw_beziergon method
takes fill and stroke color, thus also allowing to optimize for backends
which can fill and stroke in one step (e.g. SVG, Shape, WPG?).
For symmetry the signature of draw_arc, draw_ellipse and draw_polygon
should also be adapted to take the extra fill color. The respective fill
methods are than superfluous. Also more compact files get created, usually
with a single graphic element per standard object.

As the first step the object rendering code is only adapted, but not
necessarily optimized to remove the extra "stroke call". Further commits
will optimize draw_bezier some more before going to draw_polygon