core_map: Use Core_map in Semantics
Merge pull request #255 from frenetic-lang/core_map

Use Core_map in Semantics
Fix bad merge: remove lwt controller

These files were reintroduced by 442be659.
from_pipe: remove unused port in packet_out

The port optional port in a OFPT_PACKET_OUT is only used when the action
list contains an action that would send the packet to the TABLE
pseudoport. As of now, Frenetic does not allow this.
from_pipe: move result type from NetKAT_Types to Async_NetKAT
from_pipe: Document Async_NetKAT
Really remove PolicyGenerator for now
(cherry picked from commit fbfcc09b9dfa1ba9a1d91bbff4d21b5889a132c5)
from_pipe: port to latest topology API
from_pipe: Different eval strategies for union

If a branch of a union has side-effects, the user may want to ensure their
ordering by using `Sequential, which will evaluate the left application to
completion before running the right one. `Parallel provides no guarantee about
evaluation order.
Revert "from_pipe: remove unused port in packet_out"

This reverts commit 8ba2bd01e03666774038198e86712426ce54f27f.

Conflicts:
	lib/NetKAT_Types.ml
topo: Complete event API

Fill out the rest of the topology events. These have some overlap. For
example, the user will see a PortUp event as well as a LinkUp event
containing the same switch_endpoint. It's up to each application to
decide what level of detail they want to observe, and ignore the rest.
topo: don't use ocaml-openflow topology discovery

Use a custom instance of Network and stop using the topology disocvery
stage from ocaml-openflow.
topo: pass around a reference to Topology.t
topo: replace assertions with raises

Asserts seem to not play nicely with async.
topo: Generate PortUp events on switch connect

When a switch connects, generate a SwitchUp event along with a PortUp
event for every useable port that the switch. For a port to be useable,
it must be plugged in and administratively enabled.
topo: Change List.map to List.iter
topo: handler type takes packet_out Pipe

Rather than returning a list of packet_outs, applications now write
them directly to a pipe. This will eliminate a lot of cruft in writing
applications, allow users more finer-grained control over blocking, and
will likely increase the concurrency in the system.
topo: handle PortStatusMsg
topo: Remove LinkDown event

Somewhat redundant given PortDown. It may be the case that in practice
this is useful, in which case when all the topology-related events
should carry with them the topology when the event occurred, so that
applications can do diffing if they need it.
topo: Genereate PortDown events before SwitchDown