Update `setConstraint` to simplify existing constraints (and adding the

simplified constraint) when a new constraint is added. In this patch we just

simply iterate over all existing constraints and try to simplfy them with

simplifySVal. This solves the simplest problematic cases where we have two

symbols in the tree, e.g.:

int test_rhs_further_constrained(int x, int y) { if (x + y != 0) return 0; if (y != 0) return 0; clang_analyzer_eval(x + y == 0); // expected-warning{{TRUE}} clang_analyzer_eval(y == 0); // expected-warning{{TRUE}} return 0; }

This patch is the first step of a sequence of patches, and not intended to be

commited as a standalone change. The sequence of patches (and the plan) is

described here: https://reviews.llvm.org/D102696#2784624