Improve dead-variable elimination.

We will now consider any variable with no reads as a candidate for
elimination. This requires us to look inside expressions, but in
practice we only care about binary expressions since `a = b` is the
only way to write to a variable without also reading from it. (Even
`a *= b` is considered a read-write; that is relaxed at followup CL
http://review.skia.org/582822, further improving these results.)

Changes in various existing tests were added to counteract this
optimization; otherwise the output would have large portions missing.

Change-Id: I3bb62069f10ff244d0b10d993e913062197fcb04
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/583096
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
22 files changed