[tsp] Add dynamic programming solver for the Travelling Salesman Problem

Uses memoization (aka caching).
[tsp] Improve method docstrings, plus one variable rename, for readability
[tsp] Disable assertions
[test_dijkstra_sssp] Add Dijkstra unit test (vs networkx's Dijkstra)
[test_dijkstra_sssp] Change to directed graph (from undirected)
[dijkstra_sssp][test_dijkstra_sssp] Change one param name and default value

Change `weight_attr_name` parameter to `weight`, and its default value from
'cost' to 'weight'.
[bellman_ford_sssp] Change one param (weight_attr_name) name and default value

Change `weight_attr_name` parameter to `weight`, and its default value from
'cost' to 'weight'.
[johnsons_apsp] Add parameter to choose edge attr to use as a weight

Add the `weight` parameter with default value 'weight' (previously we used
'cost' as a hardcoded default), so that users can choose which edge attribute
to use as edge weights.
[bellman_ford_sssp] Add param for edge weight attribute in has_negative_cycle

Make it so that the user can choose which edge attribute to use for edge
weights in has_negative_cycle. We previously used 'cost' hardcoded.
[tsp] Change one parameter (weight_attr_name) name and default value

Change `weight_attr_name` parameter to `weight`, and its default value from
'cost' to 'weight' in Solver.solve() method.
[test_dijkstra_sssp] Fix test on not-connected graph
[test_dijkstra_sssp] Make test on strongly-connected graph more robust
[profile_dijkstra_sssp] Add profile code for dijkstra_sssp