refactor basic_adaptor_impl and basic_adaptor_sentinel out of range_adaptor