define distributed bellman-ford update rule

update_neighbor() updates the costs of a neighbor and then runs
the bellman-ford algorithm, updating every cost to every node in
the network.

nodes holds all state information necessary for bellman-ford:
    1. direct distances to neighbors
    2. estimated cost from self to every node in the network
    3. neighbors' estimated costs to every node in the network

an example of the nodes data structure is given by nodes_example and
will be deleted a little down the road.

adds helper functions for getting neighbors, getting the estimated
costs to every node in the network, and getting a formatted string
address given an ip and port