------------------
* Major update of graph classes into four new categories (Graph, DiGraph, MultiGraph, MultiDiGraph) in line with Networkx.
* Cleaned up models and organized in three modules (dense, sparse, spark) based on how the computations are performed and results are stored.
* Introduced better inheritance through Ensemble classes based on the newly defined graph classes.
* Added testing in spark and updated testing of MultiDiGraph Ensemble classes.