Fix minor bug in CSE.
Fix minor bug in CSE.

Use counts are not transitive. E.g in (x*x + 1) + (x*x + 1), (x*x + 1) is
used twice, x*x is used once (not twice), because once we pull x*x + 1 into
a let, there will only be one x*x.

But use counts should be transitive for exprs we're not going to
extract as a let! E.g, in the above example, if we're not going to pull
x*x + 1 out as a let, then we should treat x*x as having a use count of 2!

So I've separate the use_count tracking from the global numbering, and made
exprs for which should_extract = false transitively increment the use_counts
of their children.


Former-commit-id: 338b93335a5701dda248c0fc49a48a15f9b0b2f3
darkbuck/Halide,Trass3r/Halide,Trass3r/Halide,darkbuck/Halide,darkbuck/Halide,Trass3r/Halide,darkbuck/Halide,Trass3r/Halide,darkbuck/Halide,Trass3r/Halide,darkbuck/Halide,Trass3r/Halide,darkbuck/Halide,Trass3r/Halide