reactive: add logging to add/remove port ops
reactive: fix bug in updating state

Handling any switch message would result in an infinite loop. The
deffered in the state for reading a switch event (`s.State.e`) is never
replaced with a new deferred when handling messages. On the next
iteration, choose would immediately return with the same switch event,
as that deferred was already determined in the previous iteration, and
the current iteration would process the same event again.
reactive: respond to PortState { reason = Modify } messages

Add indicates a new port coming into existence. Delete indicates that an
existing has been removed from the switch. Modify messages indicate when
a link goes down or up.