Started with a demo of user-defined node shapes

Not yet done: looks perfect when rendered with Rascal, but not so
perfect when pasted in an HTML page.
Added optional "use" element in node meta-data for user-defined node
shapes

The basic idea is that instead of the standard rectangle that is now
drawn for each node, a separate shape can be defined per node.

This is achieved by adding an extra "use" field that holds the name of
an SVG def element. Whenever a node is rendered and the use element is
present, the defined element will be drawn.

An extra complication is how to determine the intersection between edges
and user-defined node shapes. The approach is as follows:

- circle, ellipse and polygon are supported and separate boundary 
  intersection algorithms have been implemented

- for all other cases we fall back to rectangular boundary.

Caveats:

- When the user defined shape is much larger than the height of each 
  layer (rank), the end point of the edge may actually be inside the    
  user-defined node shape and no intersection can be found. Solutions:
  (a) make shape smaller; (b) increase nodeSep.
  
- When using donut-like shapes (with a hollow interior) and fill-rule 
  "evenodd" the interior will not be filled and outgoing edges will 
  become visible (since they are drawn from the shapes center below the 
  shape itself). Solutions: (a) don't use shapes with interior holes as
  shape; (b) may get fixed in later versions.