fix #150 support negative weights in shortest_path_tree, also add some tests.