Include edge id in position graph
Treat border segments as dummy nodes for positioning

This fixes the overlap problem in the positioning algorithm for all of
the cases I've tried so far. Previously border segments were treated as
regular nodes, so they were not kept straight if a a non-inner segment
crossed them. Now we use "dummy" to indicate any node that should be
treated as an inner segment for the purposes of positioning.

There is still a lot of cleanup to do in terms of refactoring,
documentation, test cases, and performance tuning. I also prefer Sander
strategy 2 for dummy node placement. However, this is a pretty big step
forwards in terms of adding clustering support. The work now is
incremental improvement.