Changed the type of eval from

    eval : pol -> value -> action

to

    eval : pol -> value -> value list.

This matches the intuition of interpreting policies as functions from located
packets to bags of located packets.

Originally, we needed [eval pol val] to return an action [act] such that when
act was applied to val, it produced the desired output packets.  act was then
sent with the PacketOut message to the switch, where it was applied to the
packet in the data plane.

Now, we construct an equivalent action by

1. Evaluating the policy on the incoming packet, generating outgoing packets.

These outgoing packets may contain packets that were already processed in
the dataplane (eg. if the policy is monitorPackets("") + all, packets matching
'all' would be forwarded in the dataplane).

2. To remove duplicates, we compile the policy to a flow table and classify the
incoming packet.  This gives us the output packets that were handled in the
dataplane, along with the packet sent to the controller.

3. Subtract (1) from (2), which gives us the new packets generated from
ControllerAction actions.

4. For each such new packet p_out, calculate the actions required to transform
the incoming packet to p_out.

5. The union of all these actions will be sent along with the original PacketIn
payload as a PacketOut message, where the actions will be applied to the
original packet.

@arjunguha I'm not super confident that this code is bug free.  I'm going to
add more tests, but we may want to roll back this commit; the code prior to
this is stable.
Merge branch 'master' of https://github.com/frenetic-lang/frenetic
Merge branch 'master' of https://github.com/frenetic-lang/frenetic