They're basically the same function, so let's not implement it twice. And they've fallen out of sync a bit: howManyLessThans has more features.
Still need to investigate:
1. We're replacing smin/umin expressions with less efficient smax/umax expressions. Not sure how we're supposed to canonicalize here.
2. The isLoopEntryGuardedByCond check is failing in places where it used to succeed.