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`

In addition, this fixes a bug caused by trying catch the wrong exception. This change should have no effect on the external-facing API.