topo: refactor switch discovery, send probes periodically

tweaks to discovery
topo: refactor switch discovery and ctl

Move the creation of the event pipes to Ctl, and expose a functions to
use it, as well as query to state of pending ports.
topo: arp-based host discovery

The Discovery.Host app will copy all arp traffic and send it to the
controller. It assumes that the entire network is under the management
of the controller.
topo: add logging to learning app
topo: improve logging for discovery app
topo: print more logging tags in controller
topo: Write without pushback to event pipe in Discovery

The events written to the pipe will eventually get fed back into the
app, so blocking on pushback was causing a deadlock.
topo: Add error logging to controller loops