auto: work-in-progress implementing choice nodes
auto: properly thread pick_states sets

Note that this commit depends on a patch to dprel that lives at

  http://github.com/seliopou/dprle

The patch allows the user to observe changes in state labels when
unioining automata.
Fixed bugs in epsilon elimination

* Rewrote to cleanly separate pick-state / non-pick-state cases.

* Handle case where transition from q - ns -> q' and the epsilon closure
  of q' includes a pick state q''. Then we need to add r - ns -> r' and also
  r - ns -> r'', where r, r', and r'' are the new automaton states for q, q',
  and q'' respectively.

This seems to work on the simple unit test involving choice!

Left lots of debugging code in, in the event that Spiros finds it useful.
auto: handle init choice with ingress policy

If the top-level constructor of a policy is Choice, then the previous
transformation would ignore the choice. This is because to_lf_policy
only checks for choice nodes when traversing to a new state. In that
case, there's a switch that can make the choice.

If there is no switch that can make the choice, then _all_ switches must
make the choice. So, return the choice as an ingress policy that the
compiler can implement as it chooses.
auto: remove or comment debuggin output

Remember this commit if this code never needs debugging.
auto: add a bigger choice example