Added common-subexpression-elimination in key places

Now you can pass in a combinatorial mess of Exprs without the
compiler choking. A key component was being able to traverse IR
without hitting the same node twice, so an IRGraphVisitor base
class was added for this. Another component was being able to
strongly order all Exprs by value (in order to make a set of them),
so ExprDeepCompare was added for this purpose. The alternative would
have been hashing expressions, but this would have been harder to get
right, and we already had very similar code for deep equality
comparisons.
Images can now handle stride[0] != 1
Adjacent strided loads do a better job of sharing loads.
Made EarlyFree less verbose.
Changed hypothetical syntax for bitwise not (which doesn't exist)
Merge branch 'master' of github.com:halide/Halide