Use ocaml-topology as the basis for a NIB

This pull request adds to the `OpenFlow0x01.Controller` a few APIs that are necessary to write a full-fledged Frenetic controller:

* `switch_id_to_client` for translating switch ids to controller connection ids;
* `client_id_to_switch` for translating controller connection ids to switch ids; and
* `nib` to expose the state of the network, as known by the controller at the time.

Depends on #94 and frenetic-lang/ocaml-topology#30