Some cleanup while trying to remember how this thing works
Flatten statements before processing

Any seqs (lists, lazy seqs, cons) found in the input statements to
graph/digraph/subgraph will be flattened out like in hiccup. This make
programmatic generation easier because you can embed for comprehensions,
maps, etc in the statement list without manually concat'ing or cons'ing
or whatever.
Rename ::type key to :type. That was silly.

:type values remain namespace qualified. Otherwise they can't be
derive'd.