Avoid using rankdir=LR and rank=same, because older versions of Graphviz (i.e.
the current version for Debian) have problems when there are edges between
nodes with the same rank in this case. For us, this causes bad things to
happen when there is a pointer in one function that points to a stack allocated
variable in another function. Instead, try to make the graph take a similarly
structured form by maintaining the invisible edges between function nodes, and
making all edges between function nodes have "constraint=false", so that they
don't influence the ranking.
Merge development upstream into issue #3 branch.