Add the following utility functions for seec::cm::Value objects:
  isContainedChild(Child, Parent)
  checks if Child is a contained (not dereferenced) child of Parent.

  doReferenceSameValue(A, B)
  checks if A and B have a common dereferenced value.

Update DotGraph.cpp to use isContainedChild().
Update the new graph layout's reference selection to remove void references
(unless there are no non-void references), to remove redundant references (e.g.
if two pointers reference chars in a region, remove the pointer that
references the higher char, as the other pointer would expand all common
dereferences), and to remove references to children of other references.

This implements almost all of the automatic deciding that we had in DotGraph,
except selecting char over non-char types.