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.
Clarify row-major vs column major in tutorials.