Redo the horizontal compaction phase
Redo the horizontal compaction phase

I continue to come across new cases where the BK horizontal compaction
algorithm fails. Instead of trying to continue to patch it, I've
replaced it entirely with a simpler two-sweep DFS algorithm which works
for all of the failing cases I've tested.

Fixes #125
Fixes #158

shelsonjava/dagre,lmcorbo/dagre,GerHobbelt/dagre,kdawes/dagre,cpettitt/dagre,abduld/dagre,abduld/dagre,cpettitt/dagre,GerHobbelt/dagre,shelsonjava/dagre,GerHobbelt/dagre,cpettitt/dagre,lmcorbo/dagre,kdawes/dagre,lmcorbo/dagre,shelsonjava/dagre,tylingsoft/dagre-layout,9n/dagre,9n/dagre,tylingsoft/dagre-layout,abduld/dagre,9n/dagre,kdawes/dagre