Refactored and reorganized a ton of stuff within the graph data
structure in order to split things up and divide the workload between
the graph, node, and edge classes. Need to implement the ability to
remove nodes and edges from the graph, but everything else works and the
module can be used completely independently. Also need to implement the
user interface and JSON parsing and such and basically catch up.

Signed-off-by: MasterPpv <pritenvora@gmail.com>