* Rewrite node placement and edge routing parts of graph layout code
* Document the high level structure of layout algorithm
* Tighter layout and less edge crossings
* Better worst case memory and CPU usage
* Rewrite block sorting and placment so that unreachable blocks are processed.
* Use DFS instead of Kahn's algorithm for toposort as it makes it easier
to deal with loops.
* Remove unused code
* Separate graph layout code from GraphView.
* Remove formatting and grid layout specific code from GraphLayout.
* Copy edge styles from from main graph view to overview.