Check port when removing self referenced routes

* Cleanup how self referenced routes were determined
Prevent duplicate routes properly

* Guarantee lock when checking & adding a route
* Upgrade to a solicited route if one is seen
* Fix race issue when setting the remoteID
Let readLoop do the closeConnection magic on any error

clearConnection will close the socket, but defer to readLoop to clean
up the client's connection
function closures
rand contention TODO
pedantic about over zealous GC for sockets
Fix log calls
Make sure to wait long enough
No longer add subscriptions to router clients with no existing connection.

race condition:
 - a client is closed at the same time as an incoming SUB message occurs.
 - the subscription is added to the srv.sl even though the socket is
   closed.
 - the connection cleanup has already run, so the bad state is never
   corrected
 - now messages may be forwarded to a client without a connection
 - messages will not be forwarded to a router that needs it now, because
   processMsg assumes the router already received it
exposing Client type from server package
auth abstraction