Add bisecting of constraints

This allows conda to exit faster in the case where the packages are not
satisfiable. It also seems to be faster in general.
Simplify bisect logic

Just start out bisecting half the tree. This is faster in the common case
anyway.