add digraph; merge undirected graph  and digraph with abstract Graph interface; fix unit tests error; argument check