Feature/disjoint

1. Add implementation for `disjoint` for the combinations:
   * point/multipoint
   * multipoint/multipoint
   * multipoint/segment
   * multipoint/box

2. Add test cases for the combinations above

3. Update support status table for `disjoint`
This is completely intentional. It is meant for points, segments and boxes only, in which case the complexity is linear.

Regarding `check_iterator_range`: I agree that the name is not perfect. On the other hand I do not see the advantage of using `std::find_if`: check iterator range is calling the predicate's static apply method, and this is why I introduced this class.