TODO ---- 1) Write tests 2) Handle out-of-bounds errors when laying out graph 3) More and better error reporting 4) Add more options 5) make edges leave and arrive at nodes in better positions/angles