Added base class for graphs.

Classes:
    - BaseGraph: abstract class that defines basic functionality all
      graph types support
    - Graph: extended BaseGraph, removed duplicate functionality

Misc:
    - changed package structure
Changed the BaseGraph class to allow for edge attributes.

Classes:
    - Path: initial skeleton for implementation of Dijkstra's