Interface changes for NIB

This pull request makes a few additions and changes that make it easier to use this library as the basis for a NIB in an OpenFlow controller:

* Add `next_hop_via`, which returns the link traversed by the hop;
* Rename functions that apply to both switches and hosts, i.e., rename `ports_of_switch` and `add_switch_edge` to `ports_of_node` and `add_ports_edge`, respectively;
* Add `remove_port` function that will remove labels associated with privded node and port; and
* Add `remove_switch` function, which is a thin wrapper around `remove_vertex`