reduce pip requirements
some ideas on email provider optimization - feel free to ignore

  - 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|)

i noticed that some of the ajax requests were taking a long time to complete.
i don't want to overstep, but i figured i'd at least show you these changes.
Merge pull request #2 from jdhenke/jdh-contrib

more ideas from joe