Simplify inequality comparisons against ramps and min/max expressions.

This PR contains some work done inside simplify for the specialize_branched_loops branch. I am splitting this off of the main PR for specialize_branched_loops so that it is easier to review.

There are 2 basic changes here. First, I added simplify rules for handling LT nodes with vector args. More recently, I added some simplify rules for handling LT nodes with min/max args. These simplify rules are very important for the specialize_branched_loops work.
I think these last four rules should only be used if the element type of the ramp is Int(32). The reason is that other types have well defined overflow, so the base + stride * (width - 1) expression might not be monotonic the way this logic assumes. However, for Int(32), we allow arbitrary behavior in the case of overflow, so the assumption of monotonicity is safe.

I think the fuzz tester of the simplify should be able to catch this sort of thing, though it might take a while. I'm running it now... For reference, a helpful snippet when modifying the simplifier is:

    for i in {1..100}; do make test_fuzz_simplify; done