more ideas from joe

i noticed that some of the ajax requests were taking a long time to complete so figured i'd take a whack at making things faster. feel free to ignore, just figured i'd share!

 - reduce pip requirements
 - use `set` rather than `dict` in related nodes function
 - use `dict` for adjacency list for edges instead of `list` of `tuple`s
    - edge detection between two nodes is now O(1) vs O(|E|)
    - finding related nodes of one node is now O(|related-nodes|) vs. O(|E| + |related-nodes|)