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.