sync_pol: use the last policy update as the current policy

The controller must keep track of the current, authoritative policy for
the network. While there may be delay in actually implementing that
policy on the network, that delay should be minimized.

Prior to this commit the controller used the current policy for the
application it was running to determine the current, authoritative
policy for the network. But when the user specifies a non-zero
policy_queue_size, the application's current policy may differ greatly
from the one installed on the network, and that difference may persist
for quite some time. The result is that many packets sent to the
controller will be subject to a policy that is significantly different
from the network policy that forwarded them to the controller in the
first place.

This commit changes the bookkeeping of the current policy so that the
current policy is determined when the controller begins to install the
latest policy update on the network.
Fix Camlp4 parser bug, replacing '=' with ':='

Also rationalize order of field names.
Add parser support for IPv4 netmasks.
Ulexing dependency.
Merge pull request #337 from frenetic-lang/sync_pol

sync_pol: use the last policy update as the current policy
mk_op: Use mk_{seq,union} operations for app composition

These operators will eliminate extraneous policy fragments while
performing composition, which will make the result easier to read at the
very least.
Cleaner implementation of IP masks.
Try parsing IP addresses first.
Move mask parsing from lexer to parser
Merge pull request #343 from frenetic-lang/masks_parser

Add parser support for IPv4 netmasks.
Merge pull request #342 from frenetic-lang/raw_app

Low-level app interface abstracts over value type
Merge pull request #344 from frenetic-lang/mk_op

mk_op: Use mk_{seq,union} operations for app composition
expose_raw: Expose raw_app as Raw module

The Raw module provides access to the underlying Raw_app.t while
providing a nicer interface to users.
filter: initial implementation of Pred module

Pred.t is the pred analogue of the app type for policy. It allows you to
create and compose applications that will produce pred updates in
response to network events.

Conflicts:
	async/Async_NetKAT.ml
	async/Async_NetKAT.mli
filter: constructor for asyncronous Pred.t updates
filter: add partial application point to async_handler

The handler may want to store the update pipe for asynchronous updates.
The partial application point allows it to do so.
filter: use mk_{and,or,not} predicate constructors
expose_raw: Reorg app interface into Policy module

The Async_NetKAT module has been reorganized into three submodules and
related functions. Creation functions are included in their respective
submodules, while combinators are in the top-level so they do not have
to be qualified for use. This should allow one to open the Async_NetKAT
module and get dropped into an environment for easy app creation and
composotion.
daft_punk: Add in_edge helper function to TUtil

Determines whether a switch_id, port_id pair belongs to the edge of the
network.
daft_punk: add Flip app supporting dynamic configuration

The Flip app allows users to create simple Pred-based applications that
are dynamically configurable. The constructor takes a predicate that
will be used when the app is enabled. When the Flip.t is disabled, the
app will produce a False policy update.