reactive: make the controller "incremental"

The previous design would delete all flowtable entries and install new
ones when a port would go down on a switch. The current design installs
overlapping rules of different priorities, each corresponding to a
different choice of output port, and instead removes and adds individual
rules when a port goes up or down.

Note that this code makes the assumption that each group in an action
only involves a single port. If it weren't for that, it would be
somewhat difficult to implement this functionality in complete
generality.