refactor and explain route calculation
This was rather impenetrable and had some significant code
duplication. So add some words of explanation, and refactor to remove
the duplication.
Some fly-by fixing of minor bug too: buildUnicastRoutes failed to
exclude asymmetric connections from the first hop.
fix typo
Merge branch 'master' into refactor_and_explain_route_calculation
Merge pull request #253 from rade/refactor_and_explain_route_calculation

LGTM, allowing that the results are unbalanced (and unchanged in this respect from before this PR)