function parseDOT(data) {
  dot = data;
  return parseGraph();
}
Parse a text source containing data in DOT language into a JSON object.
The object contains two lists: one with nodes and one with edges.

DOT language reference: http://www.graphviz.org/doc/info/lang.html

DOT language attributes: http://graphviz.org/content/attrs
@param {string} data     Text containing a graph in DOT-notation
@returns {object} graph   An object containing two parameters:
                         {Object[]} nodes
                         {Object[]} edges

-------------------------------------------
TODO
====

For label handling, this is an incomplete implementation. From docs (quote #3015):

> the escape sequences "\n", "\l" and "\r" divide the label into lines, centered,
> left-justified, and right-justified, respectively.

Source: http://www.graphviz.org/content/attrs#kescString

> As another aid for readability, dot allows double-quoted strings to span multiple physical
> lines using the standard C convention of a backslash immediately preceding a newline
> character
> In addition, double-quoted strings can be concatenated using a '+' operator.
> As HTML strings can contain newline characters, which are used solely for formatting,
> the language does not allow escaped newlines or concatenation operators to be used
> within them.

- Currently, only '\\n' is handled
- Note that text explicitly says 'labels'; the dot parser currently handles escape
  sequences in **all** strings.