Improvements and clustering for the .dot file generation.

Dot clusters are used to show SEA IR regions.
Passing around dex_file for improved instruction  text representation.
SeaGraph now stores the dex file.
Removed all .dot edges except ssa edges and inter-region control flow.
Changed color to gray for ssa edges and kept black for control flow.
Consistently labeled SSA edges with virtual register number.
Replaced stringstream with StringPrintf.

Change-Id: I67d9d92e594d3f2de94eec1c78a64f3972ae60b1
diff --git a/compiler/sea_ir/sea_node.h b/compiler/sea_ir/sea_node.h
index 5d28f8a..c13e5d6 100644
--- a/compiler/sea_ir/sea_node.h
+++ b/compiler/sea_ir/sea_node.h
@@ -30,7 +30,7 @@
 };
 
 // This abstract class provides the essential services that
-// we want each SEA IR element should have.
+// we want each SEA IR element to have.
 // At the moment, these are:
 // - an id and corresponding string representation.
 // - a .dot graph language representation for .dot output.
@@ -42,6 +42,7 @@
   explicit SeaNode():id_(GetNewId()), string_id_() {
     string_id_ = art::StringPrintf("%d", id_);
   }
+
   // Adds CFG predecessors and successors to each block.
   void AddSuccessor(Region* successor);
   void AddPredecessor(Region* predecesor);
@@ -58,7 +59,7 @@
   // Appends to @result a dot language formatted string representing the node and
   //    (by convention) outgoing edges, so that the composition of theToDot() of all nodes
   //    builds a complete dot graph, but without prolog ("digraph {") and epilog ("}").
-  virtual void ToDot(std::string& result) const = 0;
+  virtual void ToDot(std::string& result, const art::DexFile& dex_file) const = 0;
 
   virtual ~SeaNode() { }