Local compiler bugfixes and front-end improvements

* Fixed several bugs in `LocalCompiler`

  - `bin_local` now keeps the three disjoint sub-policies (`p_inter_q`,
    `p_only`, and `q_only`) completely separate

  - `group_to_string` and `to_netkat` was backwards for groups

  - removed `op` for `extend`, which is no longer needed

* Fixed one of the unit tests in light of these changes

* Front-end improvements to run examples. For example:

    [nate@northstar ~/shared/frenetic> ./katnetic.byte dump examples/choice_loops.kat
    filter switch = 1 and port = 1;
    (filter vlanId = 6; (id; vlanId := 17) |
     filter vlanId = 7; (id; (vlanId := 11 + vlanId := 12)) |
     filter vlanId = 9; (id; (vlanId := 11 + vlanId := 12))) |
    drop
    [{pattern={InPort=1,Vlan=6,action=SetField(Vlan,17); OutputPort(1),
          cookie=0,idle_timeout=Permanent,hard_timeout=Permanent}
         {pattern={InPort=1,Vlan=7,
         action=(SetField(Vlan,11); OutputPort(1)) +
                SetField(Vlan,12); OutputPort(1),
         cookie=0,idle_timeout=Permanent,hard_timeout=Permanent}
         {pattern={InPort=1,Vlan=9,
         action=(SetField(Vlan,11); OutputPort(1)) +
                SetField(Vlan,12); OutputPort(1),
         cookie=0,idle_timeout=Permanent,hard_timeout=Permanent}]
localbugfix: refactor into general operations

The operations in bin_local amounted to intesection and difference of
local policies. Pull them out, name them, and use them.
Merge pull request #136 from frenetic-lang/localbugfix

Local compiler bugfixes and front-end improvements