Added a linear solver, which can mutate equality or inequality expressions such that a chosen variable will appear alone on the left hand side. This is used extensively in the specialize_branched_loops optimization pass.
Changed linear solver to use expr_uses_vars function rather than a custom version of the same. Minor style tweaks as well.
Merged the logic for dealing with equality vs. inequality comparison nodes in the linear solver. Also, address some minor style issues raised in the pull request.
Merge pull request #540 from halide/linear_solver

Added a linear solver mutator.