Handling default attributes for node/edge/graph

Default attributes apply to all statements following them:
  digraph G {
    n0 [label="colorless node"]
    node [color=green font=Helvetica];
    n1 [label="green node"]; /* color=green and font"Helvetica are added automatically */
  }

Multiple default attribute statements are merged, and newer attributes have
precedence over older attributes:
  digraph G {
    node [color=green font=Helvetica];
    node [color=yellow];
    n0 [label="yellow node"]; /* font=Helvetica is added automatically */
  }
Skipping inclusion of default attributes when assuring that nodes exist during edge instantiation.
Adding another test to ensure attributes aren't carried over between node definitions
Tweaks to default attribute handling for nodes

This change ensures that we only try to apply the default attributes to
a node the first time it is created, which can happen with an explicit
node statement or implicitly when an undefined node is named in an edge
statement. We take special care to ensure that the node's label
attribute is only set if it is not already defined in the default
attribute set.