Fixed behavior of within to remove special case.

Edge cases suck.

What you have seems weird. "Within returns the i such that s[i] <= v < s[i+1] or the lowest i for which s[i] == v == s[i+1]". It seems that at the very least the check should only happen at the end of the vector, at which point all we've done is add a test for equality. If all we're doing is adding a test for equality, it seems the user should do that themselves and decide what they want to do if the value is equal to the upper limit.