Based on D59959, this switches SCEV to use unsigned/signed range intersection based on the sign hint. This will prefer non-wrapping ranges in the relevant domain. I've left the one intersection in getRangeForAffineAR() to use the smallest intersect heuristic, as there doesn't seem to be any obvious preference there.
@lebedev.ri I don't really have any particular goal or previously failing case in mind here. The test changes show that this allows us to infer a few more nowrap flags and makes some signed/unsigned ranges non-wrapping. The changes seem like improvements to me, though I'm a bit unsure about increasing-or-decreasing-iv.ll.