Refactor graph ADT:
Refactor graph ADT:

-Remove unnecessary in/out keys and dict for directed graph
-Add some new graph methods
-Fix some broken methods
-Add some basic assertions

christabor/MoAL,christabor/MoAL,christabor/MoAL,christabor/MoAL,christabor/MoAL