add concepts FiniteIterable et.al., use them to concept-check lower_bound, upper_bound and binary_search