Added Within function.

Within is useful for finding the bin of a datapoint, for example when making a histogram or otherwise trying to find similar points. This commit adds the function and tests.
>It seems to me that there’s nothing special about the low end or the high end, and so the function should be symmetric, and thus it should behave as (min,max) or [min,max].

However, the bin segments are not symmetric. This structural asymmetry means that it is not possible to have a consistent system that includes symmetry at the highest level. This is the source of my philosophical problem.

`[0,0.1) ∪ [0.2,0.3) ∪ [0.3,0.4) ∪ [0.4,0.5) ∪ [0.5,0.6) ∪ [0.6,0.7) ∪ [0.7,0.8) ∪ [0.8,0.9) ∪ [0.9,1.0) = [0,1.0)`

If you want 1.0, then that should be expressed by adding `{1.0}`.

>For uses of this function with real data, exact matches on the middle boundaries should be rare or non-existant, otherwise this function is meaningless. However, matching on the very ends may be common due to minimum and maximum possible values.

My view is that these should be explicit - my approach does that. However, I'm not going to get stuck on it. I don't think a flag is a good solution.