Interim commit for adding choice into policy evaluation.
Not quite what is needed.
fixed build errors

the signature S had to be updated in the .ml file too.
Merge branch 'semantics' of https://github.com/frenetic-lang/frenetic into semantics
Choice for NetKAT (certainly still need debugging)
Merge remote-tracking branch 'frenetic-lang/master' into semantics
Merge branch 'master' into semantics
Fix order of NetKAT choice compilation, and add a few unit tests
coded up earlier example that used abstraction layer directly
Merge remote-tracking branch 'frenetic-lang/semantics' into semantics

Conflicts:
	setup.ml
Choice bug fixes
semantics: added pushvlan, popvlan and link policies

Kludg'd up Arjun's functor with switch, port, vlan, and zero in order to get
this working. Reconsider functors.
Refactor NetKAT parser and pretty printer

(a) standardize names of fields; and
(b) not use precedences.
Add helper functions to LocalCompiler

* Action.is_id
* Action.is_drop
Add cases to Local.of_policy for HeisenKAT

- Link
- PushVlan
- PopVlan
Kleene star bugfix

Track iterated policy and accumulator separately.
Remove redundant Atom normalization
Rename helper function for sequential composition.
Remove {Push,Pop}Vlan everywhere, but retain Link.
Adding parser/pretty print support for Link.

Also update QuickCheck tests.