We now manage routing table actions using dedicated functions run on
either registry or services in the registry.
Routing table now uses Route.Hash() instead of maintaining its own hash
struct filed which previously performed these operations.
Various names of variables have been changed to make them more concise.
In order to differentiate between intialized and other states we
introduced a new state: Init. The router is in this state only when it's
created.
We have cleaned up router status management which is now handled by
manageStatus function only.
* Changed router interface to return Advertisement channel
* Added default gateway route to the routing table if supplied
* Watch table for updates and advertise to the network
* We hash the routes on 3-tuple (Destination, Gateway, Network)
gw has not been initialized; it was basically an empty string and only
got populated by Sprintf-ing the addr:port IF the port has been set.
This commit sets the gw to node.Address to it's never an empty string.