Add a dead code elimination pass

This is actually pretty simple: it just walks the subgraph generated
by every OUT operation's source list (recursively) and eliminates the
rest of the nodes in the Flo graph.

This was necessary to make my binary operation balancer emit
reasonable code, as otherwise it won't work well.  I'm assuming this
will be necessary for a lot of optimization passes because they'll be
acting on sub-graphs of a circuit.