1. add Successive Shortest Path algorithm
2. fix a bug in Edmonds-Karp algorithm where backward edges are required
2. refactor ResidualCostFlowGraph by extracting an abstract super class ResidualGraph