rename
eliminate a deadlock
Golang locks aren't re-entrant. As result one can get deadlocks on
RWMutexes like this:

goroutine #1: attempt to acquire read lock -> success
goroutine #2: attempt to acquire write lock -> wait
goroutine #1: attempt to acquire read lock again -> wait

(a pending write lock prevents subsequent acquisitions of read locks)

Peer.HasPathTo could run into this since it could attempt to acquire
the read lock on a peer multiple times if previously it had
encountered that peer via an asymmetric connection.
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
oops
Merge branch 'master' into refactor_and_explain_route_calculation
Don't splode in error type checks if given nil

These two testing utils assumed that they got an error, and checked
its type; however, the most likely failure case is that there's no
error (i.e., nil). In that case they would cause a NPE panic.
Merge pull request #256 from squaremo/dont_splode

Don't splode in error type checks if given nil
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)
Cosmetic changes applied by