Fix 'set edge attribs' block parameter to use edge field for edge
Simplify builtin attribute handling
Clarify block UI attribute name-getting methods

There was some possible confusing with getNodeAttribDict() and
getEdgeAttribDict()
Really use d3.selection.text() instead of setting textContent
Improve error handling for (non)existent nodes/edges
Fix brace style
Improve node attribute handling

Node attribute handling is now separated out into its own structure.

Setting color and scale will no longer reset the layout. Also, it is
now possible to use the attribute interface to examine and modify the
position of nodes, with similar behavior to mouse movement.
Properly test the definedness of attr defaults
Fix erroneous usage of 'this' instead of 'myself'

This should deal with #217.
Improve edge attribute handling

Edge attribute handling now lives in a similar structure to node
attribute handling.

This fixes the previously broken updating of the width of edges.

Furthermore, setting the color of edges will no longer reset the
layout, and neither will setting the width of edges.
Generate the list of special node attributes automatically
Make autoNumericize() a bit shorter
Use {get,set}{Node,Edge}Attrib for context menus

This eliminates redundant and possibly divergent code.
Simplify manual (sticky) layout fixedness handling
Explain purpose of 'dblclick' node event listener
Simplify {save,restore}Layout()
Rename graphDisplayCostumesMenu -> contextMenuCostumesList
Mark context menu generation code
Rename updateNodeDimensionsAndCostume() to updateNodeAppearance()
Rename svgTextDimensions() to measureText()